如何在 MySQL 中的两个日期之间获取特定日期

Posted

技术标签:

【中文标题】如何在 MySQL 中的两个日期之间获取特定日期【英文标题】:How to get a particular date between two dates in MySQL 【发布时间】:2015-04-24 01:40:29 【问题描述】:

在我的 mysql 数据库中,user 表中有一个 dateofjoin (int) 字段。 dateofjoin 插入如下格式:

$dateofjoin=mktime(0,0,0,02,22,2015);

现在我想通过选择查询列出位于两个日期之间的日期列表。其中两个日期在 mysql 查询中自动更改。我是这样写的

SELECT *
    FROM user
    WHERE
        (MONTH(STR_TO_DATE(dateofjoin, '%m/%d/%Y')) = MONTH( CURDATE() + INTERVAL 15 DAY)
        AND DAY(STR_TO_DATE(dateofjoin,'%m/%d/%Y')) = DAY(CURDATE() + INTERVAL 15 DAY))

【问题讨论】:

您的日期是否实际存储为字符串? 使用BETWEEN 运算符,如果您只考虑日期而不考虑时间,这是安全的。 没有。存储为整数 什么的整数?是从纪元开始的几秒钟吗? YYYYMMDD?为什么用整数而不是DATE 类型? 您的问题(“我想要日期列表”)与您的 SQL 不匹配(“在该时间间隔内查找具有 dateofjoin 的用户”)。 【参考方案1】:

假设 dateofjoin 是日期或日期时间,

SELECT * FROM user
WHERE DATE(dateofjoin) = CURDATE()+INTERVAL 15 days

或类似的东西。 (您尚未指定如何获得 2 个边界日期,所以我只是使用您从现在开始的 30 天。)

但是,您在 dateofjoin 上使用 STR_TO_DATE() 的事实让我想也许您将它存储为 varchar 或其他东西? (为什么?!)

【讨论】:

确实,我正在尝试查找在特定日期加入的所有用户,并且每天都会自动检查。 我们处理的是日期时间还是日期? 我从上面的 cmets 中看到你的 dateofjoin 是一个整数。如果该整数表示 UNIX 时间戳,则应将 DATE(dateofjoin) 替换为 DATE(FROM_UNIXTIME(dateofjoin))。如果该整数表示 YYYYMMDD (20150223) 整数或 YYYYMMDDHHMMSS (20150223101403) 整数,请告诉我,我会再看一遍。我认为简单的 DATE() 环绕它就足够了,但我必须测试 DATE() 是否可以采用整数。

以上是关于如何在 MySQL 中的两个日期之间获取特定日期的主要内容,如果未能解决你的问题,请参考以下文章

mysql: 如何计算指定日期到当前日期之间的天数

如何通过 SQL 语句从两个特定日期(由用户指定)之间的数据库表中获取数据?

c#如何计算两个日期之间相隔天数

如何获取 MySQL 上两个日期之间的差异天数?

Mysql列表日期范围之间的日期,但仅限于一周中的特定日期

在 MySQL 上获取两个日期之间的数据