如何使用查询在 mysql 中获取今天之前 7 天的日期?
我想要这样的输出:-
Date Day
13/2/2016 Saturday
14/2/2016 Sunday
15/2/2016 Monday
16/2/2016 Tuesday
17/2/2016 Wednesday
18/2/2016 Thursday
19/2/2016 Friday
注意:mysql中没有这样的表来显示日期。我认为在 mysql 中使用像 CURDATE()
函数之类的东西。
最佳答案
编辑了问题以澄清没有表格。
MySQL(据我所知)没有序列生成器,为了防止出现这种情况,您可以使用一个技巧来生成日期列表。
SELECT DATE(NOW() - INTERVAL n DAY) AS date,
DAYNAME(NOW() - INTERVAL n DAY) AS day
FROM (
SELECT 0 n
UNION SELECT 1
UNION SELECT 2
UNION SELECT 3
UNION SELECT 4
UNION SELECT 5
UNION SELECT 6
) q
ORDER BY day ASC
;
请注意,这是一种非常繁琐的方法,想象一下更多日期的范围会是什么样子。如果您需要它进行一次性操作,那很好,如果您要定期使用它,您可能需要为其创建一个过程。
基于表格的答案(可能对其他人有用)
MySQL 支持 DATE_ADD
和 DATE_SUB
函数,它允许您减去 INTERVAL
。在内部,它针对以下语法进行了优化,您可能会发现它更灵活
SELECT *
FROM table
WHERE field >= NOW() - INTERVAL 7 DAY;
支持大多数“时间单位”(MINUTE
、HOUR
、WEEK
等),您可以替换 NOW( )
部分也带有字段名称。
The DATE_ADD
manual有一些关于如何使用 INTERVAL
的例子。
基本语法:
date + INTERVAL expr unit
date - INTERVAL expo unit
和实现示例:
mysql> SELECT '2008-12-31 23:59:59' + INTERVAL 1 SECOND;
-> '2009-01-01 00:00:00'
mysql> SELECT INTERVAL 1 DAY + '2008-12-31';
-> '2009-01-01'
mysql> SELECT '2005-01-01' - INTERVAL 1 SECOND;
-> '2004-12-31 23:59:59'
关于mysql - 如何使用查询在 mysql 中获取从今天开始的 7 天前的日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35520801/