如何从今天起7天前在mysql中使用查询获取?

时间:2016-02-20 08:23:05

标签: mysql

如何使用查询在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()函数的东西。

1 个答案:

答案 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_ADDDATE_SUB函数,允许您减去INTERVAL。在内部,它针对以下语法进行了优化,您可以找到更灵活的

SELECT *
  FROM table
 WHERE field >= NOW() - INTERVAL 7 DAY;

大多数'时间单位'支持(MINUTEHOURWEEK等),您也可以使用字段名称替换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'