建议适当的mysql日期函数



我有一个数据类型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()时预期的结果是不同的。

您的查询返回false,因为CURDATE()返回日期而不是日期和时间。当与日期和时间进行比较时,仅返回日期意味着2012-01-10 00:00:00。因此,CURDATE()不在2013-01-10 05:10:50之前。

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

NOW()文档

CURDATE()不包含时间,因此它将是第9/10号边界的00:00:00或午夜。如果你想这样做,请使用NOW()

你可以试试:

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;

您必须使用now()或current_timestamp

now()代替curdate()

now()返回当前日期和时间,而如果00:00:00

curdate()返回当前日期,该日期被转换为用于比较的日期时间,并且给定一个时间组件。

相关内容

  • 没有找到相关文章

最新更新