datetime差异在mysql中显示错误的值

时间:2014-07-01 06:21:01

标签: mysql datetime difference

在我的网站中,我根据添加到数据库的日期显示了一些数据。它会在过去7天内添加一个标签“NEW”。该代码完美地运行到今天。现在它显示错误的值。我使用以下代码来获得差异

DATE(stored_date_time) - DATE_SUB(CURDATE(), INTERVAL 7 DAY) AS days

,此代码的输出为77。但今天的日期是2014-07-01

在回显DATE(stored_date_time)的值时,它会给出输出

2014-07-01

并且DATE_SUB(CURDATE(), INTERVAL 7 DAY)的回显给出了输出

2014-06-24

我无法找到我的代码有什么问题。请帮忙..

4 个答案:

答案 0 :(得分:1)

如果您使用DATEDIFF,最好不要减去这些日期,如下所示:

SELECT DATEDIFF(day,'2008-06-05','2008-08-05') AS DiffDate

将返回61 ..以获取更多信息func_datediff

答案 1 :(得分:1)

尝试使用DATEDIFF功能。

SELECT DATEDIFF(DATE(stored_date_time),DATE_SUB(CURDATE(), INTERVAL 7 DAY)) AS days

答案 2 :(得分:1)

阿伦, 因为你问你的代码有什么问题。

select date1 - date2 as days;

它根本没有意义。数字格式的日期值 刚刚形成为“yyyymmddhhmmss”。所以它包含相同的信息 作为字符串,但不是使用字符,实际上每个数字 整数。该格式可能对某人有用,但您无法使用 这种格式来计算差异。

基本上我想说的是,如果上面的查询是运行的话 '2014-07-02'和'2014-06-22'你将得到80分。事实上这是

20140702-20140622 =80.

就像你已经在另一篇文章中被告知过一样,使用datediff()函数。

答案 3 :(得分:0)

遇到了类似的问题。我正在使用CAST((1000000 * (moment2 - moment1)) as UNSIGNED),其中moment1和moment2为DATETIME(6)。直到我一次获得数千种价值之一的巨大价值时,它一直运转良好。荒谬的是,为什么它一直在工作,并且只有一对值给出了无效的结果。现在将请求更改为TIMESTAMPDIFF(MICROSECOND, moment1, moment2),就可以了。