簡體   English   中英

日期之間搜索錯誤

[英]Wrong search between dates

在數據庫中我有表'用戶'列'生日'

這是我用來獲取結果的sql查詢

SELECT *
FROM (`users`)
WHERE `birthday` between '12/11/1982' and '31/01/1983'

問題是我只獲得1982年的記錄

請注意,存在1983年的記錄。

這可能是什么問題?

這只是Mark Byers的另一個答案。 如果您的列birthday的數據類型是varchar並且格式為dd/MM/yyyy ,請閱讀此內容; 否則,請閱讀Mark Byer的

您需要做的第一件事是使用STR_TO_DATE將列轉換為DATEDATETIME數據類型,

SELECT *
FROM  `users`
WHERE STR_TO_DATE(`birthday`,'%d/%m/%Y')
          between '1982-01-12' and '1983-12-31'

來源

您應該將年份放在日期文字中:

SELECT *
FROM `users`
WHERE `birthday` between '1982-11-12' AND '1983-01-31'

文檔

日期和時間值可以用多種格式表示,例如帶引號的字符串或數字,具體取決於值的確切類型和其他因素。 例如,在MySQL期望日期的上下文中,它將'2015-07-21','20150721'和20150721中的任何一個解釋為日期。

如果您使用varchar類型,那么將日期放在第一位(數據和查詢中)仍然是有意義的,因為在使用默認排序順序時,您的日期將正確排序。

暫無
暫無

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

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