【问题标题】:How to get 7 days before from today date in mysql using query?如何使用查询在mysql中从今天起7天前获取日期?
【发布时间】:2016-02-20 08:23:05
【问题描述】:

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

【问题讨论】:

  • SQL date intervals query的可能重复
  • 您能提供示例数据吗?或者您想要这样的输出而不使用任何表格,只需从对偶中选择?
  • 为什么要使用 MySQL?现在是二月,不是十二月。
  • 对不起,先生,这是我的错误。我已经改变了我的问题。实际上mysql中没有表,但需要输出必须像上面那样。在 mysql 中使用类似 CURDATE() 的函数。如何获得我的问题的答案?

标签: mysql


【解决方案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'

【讨论】:

  • 对不起先生,谢谢你重播我!但是mysql中没有这样的表来显示日期。我认为在 mysql 中使用 like CURDATE() 函数之类的。
  • 您必须将示例查询中的tablefield 替换为您的表和字段名称。该字段应该是 MySQL 提供的各种日期/时间类型之一。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多