mysql - 如何使用查询在 mysql 中获取从今天开始的 7 天前的日期?

标签 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() 函数之类的东西。

最佳答案

编辑了问题以澄清没有表格。

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 中获取从今天开始的 7 天前的日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35520801/

相关文章:

php - 如何为每个唯一行选择最早的实例[min(timestamp)]

mysql - 跨多列的全文索引中匹配的列

mysql - 左连接和连接列显示空白而不是 (null)

php - 使用多个查询的复杂 Wordpress 查询

mysql - 删除给定列表中除行号以外的所有其他行

MySQL CASE 查询与 INNER JOIN

javascript - 在 node.js mysql 查询中,检查是否没有找到匹配项

mysql - 与 Laravel/Eloquent 的复杂关系

php - 如何使用表单将 SQL 查询更改为仅显示特定范围内的注册日期?

php - 有没有办法提醒用户插入...重复的更新条目?