如何使用查询在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()
函数的东西。
答案 0 :(得分:1)
编辑问题是为了澄清没有表格。
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'