簡體   English   中英

PHP的MySQL搜索兩個日期之間的生日

[英]php mysql search birthday between two dates

我需要從表中查找人們的出生日期..從今天開始的未來7天。 我有一個查詢.. SELECT * FROMWHERE DOB LIKE BETWEEN %-08-17 AND %-08-24但它返回,且日期不在database..i提交意味着條目0000-00-00我的記錄已將生日以日期格式存儲在表中。 請幫助我找到錯誤。

由於這是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演示

更新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

如果日期范圍之間的月份或年份發生變化,這將正確處理以下情況:

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))

通過將“開始日期”轉換為今年的日期,可以避免期限超過一個月或一年的邊界的問題。 這將選擇下一周發生生日的所有行:

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日至8月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')))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM