0

我有一个关系为 1: N 的数据库表,其中N表示一个事件的多个日期。带有日期的列是DateTime类型,我想保留该Time选项以供以后使用,但如果我必须将其更改为类型,它不会那么糟糕Date

当我必须在某些GUI. 我使用该函数获取日期,GROUP_CONCAT这意味着在 JavaScript 中,我使用一个以逗号分隔的值表示不同日期的字符串进行操作,该字符串现在采用默认 SQLDateTime格式 - YYYY-mm-dd hh:mm:ss

我使用该split(',')函数来获取每个日期时间值,我可以做的是将 SQL 列的类型更改为Dateso 当我在 JavaScript 中拆分字符串以得到YYYY-mm-dd值时。dd-mm-YYYY对于GUI. _

我不知道如何在这里进行。我有两个主要选择:

第一:也许有一种dd-mm-YYYY在 SQL 中使用格式的方法可以解决所有问题。

第二:JavaScript中的某种(复杂?!?)字符串操作将日期字符串拆分为具有多个元素的数组,然后尝试按照我需要的方式格式化每个元素。

老实说 - 我想避免第二种选择,但不知道第一种是否可能,也许还有另一种我没有想到的方法。

4

2 回答 2

3

尝试这个..

SELECT GROUP_CONCAT(DATE_FORMAT( date_time_column, '%d-%m-%Y' )) FROM test_table;
于 2012-06-12T07:36:18.570 回答
1

首先,我建议在代码中的任何地方都使用本机日期/日期时间格式,并且仅在您真正想要显示它的地方使用本地化变体,例如 dd-mm-yyyy。第一个原因:它在您的代码中是一致的。第二个原因:排序。

例子:

2012-03-01    >    01-03-2012
2012-05-12    >    12-05-2012
2012-01-03    >    03-01-2012 

按您将获得的本机格式排序...

1: 2012-01-03
2: 2012-03-01
3: 2012-05-12

按输出格式 dd-mm-yyyy 排序,它看起来像这样......

1: 01-03-2012
2: 03-01-2012
3: 12-05-2012

...我怀疑这是大多数人想要的。

通过 SQL 调整输出

您可以更改 SELECT-query 中的输出,大多数 RDBMS 都为此提供功能。例如,在 MySQL 中它是DATE_FORMAT,它看起来像这样:

SELECT DATE_FORMAT(NOW(), '%d-%m-%Y');

通过 SQL 调整输出

您还可以使用 php 更改输出,此处对此进行了说明。

通过 JavaScript 调整输出

在 JavaScript 中也不难做到这一点:是一篇很棒的 SO 帖子,详细解释了它。

于 2012-06-12T07:45:02.747 回答