建议适当的mysql日期函数

时间:2013-01-10 09:02:24

标签: mysql sql datetime select

我有一个数据类型为datetime的日期字段,即使已存储H:s:i但我不想在验证中考虑我正在使用CURDATE()查询条件,但正在考虑'H:S:i',例如

SELECT ('2013-01-10 05:10:50' <= CURDATE()) FROM dual

上面的查询返回false(0),为什么不是true(1)因为2013-01-10 05:10:50是过去的时间。简而言之,我想存储'H:s:i'但是在验证MySql函数适合的时候不应该考虑?

更新了以下内容

我不想使用NOW()SYSDATE(),因为这些函数会在验证时考虑H:s:i,因此我使用了CURDATE(),但预期结果会有所不同我正在使用CURDATE()

5 个答案:

答案 0 :(得分:2)

您的查询返回false,因为CURDATE()返回的日期不是日期和时间。在与日期和时间进行比较时,只返回日期即表示2012-01-10 00:00:00。因此CURDATE()不在2013-01-10 05:10:50之前。

我建议您使用NOW() - 这会返回日期和时间。

Docs for NOW() here

答案 1 :(得分:2)

CURDATE()不包含时间,因此它将在第9个/第10个边界的00:00:00或午夜。如果您要执行此操作,请使用NOW()代替

答案 2 :(得分:1)

你可以试试这个:

SELECT DATE('2013-01-10 05:10:50') <= CURDATE() FROM DUAL;

SELECT '2013-01-10 05:10:50' <= DATE_FORMAT(NOW(), '%Y-%m-%d 23:59:59') FROM DUAL;

答案 3 :(得分:0)

使用now()代替curdate()

now()会返回当前日期和时间,而curdate()会返回当前日期,该日期会转换为比赛时间,并且会在{{1 }}

答案 4 :(得分:0)

你必须使用now()或current_timestamp