Date
如何比較 SQL 中的日期?
在數據庫表中,我創建了一個日期屬性,但我已將其類型設置為
varchar
and notDate
。我的問題是:我仍然可以在 SQL 查詢中比較這些日期嗎?我的數據庫中的日期以這種格式儲存:
dd/mm/yyyy hh:mm:ss
我必須在 PHP 中執行如下所示的 SQL 查詢:
SELECT * FROM DBtable WHERE DBname='$name' AND date>='31/01/2015' AND date<='31/09/2015';
“日期”看起來像這樣:
07/08/2015 15:15:02
我會很感激一個如何做到這一點的例子。
根據您使用的數據庫,您應該能夠將字元串轉換為日期,然後進行比較。
即在 Sql Server 中
cast(date as datetime) >= '20150131' ...
也就是說,如果可能的話,我通常建議將日期儲存為日期,如果您確實需要使用字元串,最好使用更標準化的格式
即
'YYYY-mm-dd'
,甚至更好,例如,可以很容易地將其與許多文化中常見的'YYYYmmdd'
混淆。請參閱此部落格文章:要踢的壞習慣:錯誤處理日期/範圍查詢'mm/dd/YYYY'``'dd/mm/YYYY'
有一個問題是“您使用的是哪個數據庫?”
每個 RDBMS 都有自己處理問題的方法。
如果是 MySQL,請使用 str_to_date:
https://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_str-to-date
這會將 varchar 轉換為日期,並可以正確排序日期。將日期排序為 varchar 數據類型將導致一些意外行為。