如何在 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 中的两个日期之间获取特定日期的主要内容,如果未能解决你的问题,请参考以下文章