將 MySQL 日期與 date_format 進行比較
儘管嘗試了多種日期比較方法,但用戶還是遇到了意外結果。他們試圖比較格式為“%d-%m-%Y”的日期,但結果集中包含錯誤記錄。
問題源自於比較字串而非日期。 date_format 函數將日期轉換為字串,使比較容易受到字典順序的影響。例如,“28-10-2012”按字母順序排列大於“02-11-2012”,因此儘管按時間順序排列較早,但它仍包含在結果集中。
要解決此問題,應在日期而不是字串。日期函數可用於從 DATETIME 或 DATE 欄位中提取日期部分。透過比較提取的日期,確保時間順序。
例如:
select date_format(date(starttime),'%d-%m-%Y') from data
where date(starttime) >= date '2012-11-02';
在此查詢中,date(starttime) 從starttime 欄位中提取日期,然後將其與YYYY-MM 中的指定日期進行比較-DD 格式。 date_format 函數僅用於格式化結果。
如果 starttime 是 DATETIME 字段,請考慮使用:
select date_format(date(starttime),'%d-%m-%Y') from data
where starttime >= '2012-11-02 00:00:00';
此查詢避免了重複的日期轉換,因為直接在 DATETIME 欄位上執行比較。
請記住,ISO -8601標準建議使用'YYYY-MM-DD'作為日期格式,但提供的代碼遵循用戶指定的'%d-%m-%Y'格式。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3