SELECT过滤器查询中的日期格式
本文关键字:日期 格式 过滤器 查询 SELECT | 更新日期: 2023-09-27 18:07:17
我有一个字段日期类型。我正在以格式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日期格式在它的网站。但是我想知道实现这个目标的方法。
您想要转换日期的语法如下:
UPDATE [table name] SET [date field name] = STR_TO_DATE('01/04/2007', '%Y-%m-%d')
这将把我们所有的日期转换为标准,就像Gordon Linoff说的。如果你想让它们看起来像你原来的日期,那么你可以在你的查询中使用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子句中改变你想要计算的字符串为日期。这是你想要的吗?
这与进行比较时日期和字符串之间的转换有关。你可以输入你想要的常量:
SELECT *
FROM MyTable
WHERE dt_start >= STR_TO_DATE('01/04/2007', '%d/%m/%yyyy') ;
但是,我强烈建议您在查询中使用ISO标准日期格式。这是YYYY-MM-DD。您可以输出任何您喜欢的格式,但在您的查询中使用标准是一个好主意。