8

如果有人可以提供帮助,我会遇到这个问题。(date)我的表中有一个字段(table1)是格式的日期3/31/1988 (M/D/y),我需要定义自该日期以来已经过去了多少天。

我试图给出这个指示

SELECT DATEDIFF(CURDATE(), date) AS days
FROM table1

但它返回'null',我认为这是因为两种日期格式不同(CURDATE()是YMD.....

这是对的吗?谁能帮我?先感谢您

4

4 回答 4

13

You can use STR_TO_DATE():

SELECT DATEDIFF(CURDATE(),STR_TO_DATE(date, '%m/%d/%Y')) AS days
FROM table1

SQLFiddle Demo

于 2013-06-18T22:11:02.627 回答
2

您的DATE字段应具有DATEDATETIME格式正确用作DATEDIFF参数。

也是DATEMySQL 关键字,我不确定您是否可以将其用作有效的字段名称。

于 2013-06-18T22:13:37.173 回答
2

您可以使用它来获得准确的结果

SELECT DATEDIFF(CURDATE(), DATE_FORMAT(FROM_UNIXTIME(UNIX_TIMESTAMP(`date`)), '%Y-%m-%d')) AS days FROM `table1`
于 2018-06-03T18:48:44.760 回答
0

如果要考虑没有 - 标志的结果,则必须遵循以下参数位置:

SELECT DATEDIFF(Big_Date,Small_Date) AS days FROM table1.

正结果,例如 5(没有符号),如果您将小日期作为第一个参数,那么它将产生负号,例如 -5。

于 2020-02-10T04:13:59.597 回答