sql - 使用 datetime 和 php 从 1、7 和 30 天前选择 mysql db 中的记录

标签 sql mysql datetime

我正在使用以下查询来定位比当前时间早 X 天的结果。

SELECT  *,
        DATE_FORMAT(datetime, '%m/%d/%Y') 
   FROM table 
  WHERE datetime BETWEEN SYSDATE() - INTERVAL 30 DAY 
                     AND SYSDATE() 
ORDER BY ID DESC

如果不存在恰好 30 天前的记录,则问题是它从当天返回的数据,以及不相关的数据

有更好的方法吗?

最佳答案

BETWEEN 包括两个参数之间的所有值,包括两端的值。换句话说,BETWEEN 1 AND 4 包括值 1、2、3 和 4。不仅仅是 1 和 4,也不仅仅是 2 和 3。

如果您只想要 30 天前的那一天的日期,请尝试以下操作:

SELECT  *,
        DATE_FORMAT(datetime, '%m/%d/%Y') 
   FROM table 
  WHERE DATE(datetime) = CURDATE() - INTERVAL 30 DAY 
ORDER BY ID DESC

使用 CURDATE() 而不是 SYSDATE() 因为 CURDATE() 返回没有时间部分的日期。

关于sql - 使用 datetime 和 php 从 1、7 和 30 天前选择 mysql db 中的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3283358/

相关文章:

mysql - 带 OR 和 AND < 1 的 SQL 语句

mysql - 如何在 MySQL 中选择具有给定标签的帖子的所有标签?

mysql - 触发器 - Mysql 管理器

mysql - 这个使用平均值的查询有什么问题?

c# - 如何在 C# 中将 dd/mm 转换为 Mysql 日期时间格式

c# - 显示来自 SQL 的数据时出错

javascript - 使用 Javascript 对象动态创建 html 表

mysql - 差距检测 - 识别跳过/错过的日期

c# - 为什么 C# 没有检测到 1970/1/1 处于 BST 之下?

sql - 如何获取表中某列的最大值?