在我的网站中,我根据添加到数据库的日期显示了一些数据。它会在过去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
我无法找到我的代码有什么问题。请帮忙..
答案 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)
,就可以了。