我需要从桌面找到人的出生日..从今天开始的未来7天。 我有一个查询.. SELECT * FROM
表WHERE
dob LIKE BETWEEN %-08-17 AND %-08-24
但它返回日期未提交在数据库中的记录..我的意思是条目是0000-00-00 我已经将日期格式的生日存储在表中。请帮我找到这个错误。php mysql在两个日期之间搜索生日
回答
由于这是MySQL的,我不知道是否DATE_FORMAT()可以在这方面努力。但请尝试一下。
SELECT * FROM users WHERE DATE_FORMAT(dob, '%c-%d')
BETWEEN DATE_FORMAT('1983-08-17', '%c-%d')
AND DATE_FORMAT('1983-08-24', '%c-%d') OR (MONTH('1983-08-17') > MONTH('1983-08-24')
AND (MONTH(dob) >= MONTH('1983-08-17')
OR MONTH(dob) <= MONTH('1983-08-24')))
任何一年
都可以使用(只是为了完成日期格式),因为一年不要紧
更新1
测试了SQLFiddle.com
SQLFiddle Demo
更新2
对不起,我的第一个答案。我真的很想念这条线coming in next 7 days from today
。我认为这就是我被Imre L
降低评分的原因。他有他的观点。之所以我发布这样的答案是因为我认为OP在询问中间的日子,不管year
。所以这里是更新。
SELECT ....
FROM ....
WHERE DATE(dob) BETWEEN NOW() AND NOW() + INTERVAL 7 DAY
希望现在清楚。 :d
聪明。这比我的想法在我的数据集(只是一个有很多记录和日期的随机表)上执行时间要快十分之一秒。我喜欢。 – MetalFrog 2012-08-17 14:53:16
如果当前日期是2012-08-30,并且+7是2012-09-06,那么如果当前日期是2012-12-30,该怎么办? – 2012-08-17 14:58:22
@MetalFrog测试它,它工作[* SQLFiddle演示链接*](http://sqlfiddle.com/#!2/c69d8/2) – 2012-08-17 15:01:31
如果您的出生日期是日期字段,只需按月份和日期范围选择它。
SELECT *
FROM users
WHERE MONTH(dob) = 8
AND DAY(dob) BETWEEN 17 AND 24;
这将正确处理案件文有日期范围之间的一个月或一年的变化:
select *
from people
where (DAYOFYEAR(dob)+IF(DAYOFYEAR(CURDATE())>DAYOFYEAR(dob),1000,0))
between DAYOFYEAR(CURDATE())
and (DAYOFYEAR(CURDATE() + INTERVAL 7 DAY)+IF(DAYOFYEAR(CURDATE())>DAYOFYEAR(CURDATE() + INTERVAL 7 DAY),1000,0))
由DOB日期转换为今年的日期你能避免问题在一段跨越一个月或年份边界。在生日在未来一周会发生此选择的所有行:
SELECT * FROM users
WHERE concat(year(now()), mid(dob,5,6))
BETWEEN now() AND date_add(now(), interval 7 day)
SELECT
str_to_date(DATE_ADD(dob, INTERVAL (YEAR(CURRENT_DATE()) - YEAR(dob)) YEAR), '%Y-%m-%d') BIRTHDAY,A.*
FROM app_membership A
WHERE str_to_date(DATE_ADD(dob, INTERVAL (YEAR(CURRENT_DATE()) - YEAR(dob)) YEAR), '%Y-%m-%d')
BETWEEN str_to_date('15-10-2017','%d-%m-%Y') and str_to_date('10-11-2017','%d-%m-%Y')
ORDER BY BIRTHDAY ASC;
试试这个。为我工作。
允许列出12月14日至24日之间任何一个月/年出生的人。我们知道它是在一年前的另一年。我们必须在上一年数月。这很复杂,因为将开始日期的月份与结束日期的月份进行比较可能会有问题。但是,它可以通过此查询来解决:
SELECT * FROM t_users WHERE (DATE_FORMAT(d_birth, '%m-%d')
BETWEEN DATE_FORMAT('2017-12-14', '%m-%d') AND
DATE_FORMAT('2018-08-24', '%m-%d'))
OR(MONTH('2017-12-31') >= MONTH('2018-08-24')
AND (MONTH(d_birth) >= MONTH('2017-12-31')
OR MONTH(d_birth) <= MONTH('2018-08-24')))
- 1. QDate - 在两个日期之间搜索
- 2. PHP的MySQL搜索两个之间的日期
- 3. C#两个日期之间搜索
- 4. 两个给定日期之间的搜索日期
- 5. mysql - 在所有日期出现的日期之间搜索
- 6. 查找两个日期之间发生的日期日期
- 7. PHP如果在两个日期之间
- 8. 执行搜索用户输入日期落在两个日期之间
- 9. SQL - 与日期字符字段 - 如何在两个日期之间搜索
- 10. 如何检查日期是否在两个日期之间mysql?
- 11. 检查日期是否在mysql中的两个日期之间
- 12. 在两个日期之间生成日期
- 13. xpages +在两个日期之间的查看面板中搜索
- 14. 如何使用c在两个日期之间搜索#
- 15. 如何在两个日期之间进行搜索
- 16. SQL Server - 在两个日期之间搜索的最佳方法
- 17. 使用Ruby IMAP在两个日期之间搜索
- 18. SUP在两个日期之间搜索数据
- 19. 在导航栏中的两个日期之间搜索activerecord
- 20. 两个日期之间的输出mysql
- 21. 两列之间的Mysql日期时间
- 22. 在日期之间搜索YII
- 23. MySQL使用现在时间在两个日期之间选择一个日期
- 24. mysql查询两个日期字段之间的日期
- 25. 如何生成两个日期之间的所有日期
- 26. 在两个日期之间的特定日期的查找日期PHP
- 27. mysql表按日期搜索
- 28. PHP在给定的两个日期之间的数组值搜索
- 29. 搜索两个日期之间具有特定格式
- 30. 两个日期之间的TSQL搜索查询
表中的日期列的数据类型是什么?日期或字符串? – 2012-08-17 14:40:40
其表 – user1110597 2012-08-17 14:45:21
类型DATE那么你可以使用BETWEEN指定两个日期 – 2012-08-17 14:46:20