SELECT筛选器查询中的日期格式

时间:2014-06-05 23:50:56

标签: c# mysql select date-format

我有一个 Date 字段。我以 dd / mm / yyyy 的格式记录数据 它显示得很好。但是当我尝试在选择查询中使用过滤器时,它会返回每一行。我试过这个:

SELECT *
FROM MyTable
WHERE dt_start >=  '01/04/2007'

SELECT *
FROM MyTable
WHERE dt_start >=  DATE_FORMAT('01/04/2007', "%d/%m/%yyyy")  

现在,如果我尝试这个,它就会很完美:

SELECT *
FROM MyTable
WHERE dt_start >=  '2007/04/01'  

我知道它的网站上有标准的 MySQL 日期格式。但我想知道实现这一目标的方法。

2 个答案:

答案 0 :(得分:1)

这与您进行比较时日期和字符串之间的转换有关。你可以把你想要的常量放在:

SELECT *
FROM MyTable
WHERE dt_start >=  STR_TO_DATE('01/04/2007', '%d/%m/%yyyy')  ;

但是,我强烈建议您在查询中使用ISO标准日期格式。这是YYYY-MM-DD。您可以输出您喜欢的任何格式,但在查询中使用标准是一个好主意。

答案 1 :(得分:1)

您要转换日期的语法如下:

UPDATE [table name] SET [date field name] = STR_TO_DATE('01/04/2007', '%Y-%m-%d')

这将把我们所有的日期转换为标准,如戈登林诺夫所说。如果您希望它们在您将其拉出时看起来像您的日期,那么您可以在查询中使用dateformat:

SELECT DATE_FORMAT([date field], '%m/%d/%Y') AS myDate FROM [table name]

这有意义吗? 我也同意Gordon的说法,用标准格式存储日期会更容易。您可以通过这种方式更轻松地操作和比较日期。

修改

SELECT * FROM [your table] WHERE date >= STR_TO_DATE('01/04/2007', '%m/%d/%Y')

有了这个,您不必更改日期类型,只需将要评估的字符串更改为where子句中的日期即可。那是你想要的吗?