將 MySQL 日期與 date_format 比較
儘管嘗試了多種日期比較方法,但使用者還是遇到了意外結果。他們試圖比較格式為“%d-%m-%Y”的日期,但結果集中包含錯誤記錄。
問題源自於比較字串而不是日期。 date_format 函數將日期轉換為字串,使比較容易受到字典順序的影響。例如,「28-10-2012」在字母順序上比「02-11-2012」大,因此儘管按時間順序排列較早,但它仍包含在結果集中。
要解決此問題,應在日期而不是字串。日期函數可用於從 DATETIME 或 DATE 欄位中提取日期部分。透過比較提取的日期,確保時間順序。
例如:
<code class="mysql">select date_format(date(starttime),'%d-%m-%Y') from data where date(starttime) >= date '2012-11-02';</code>
在此查詢中,date(starttime) 從 starttime 欄位中提取日期,然後將其與YYYY-MM-DD 格式的指定日期。 date_format 函數僅用於格式化結果。
如果 starttime 是 DATETIME 字段,請考慮使用:
<code class="mysql">select date_format(date(starttime),'%d-%m-%Y') from data where starttime >= '2012-11-02 00:00:00';</code>
此查詢避免了重複的日期轉換,因為比較是直接在DATETIME 字段。
請記住,ISO-8601 標準建議使用「YYYY-MM-DD」作為日期格式,但提供的代碼遵循使用者指定的「%d-%m-%Y」格式.
以上是為什麼 MySQL 日期與 date_format 比較會產生意外結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!