Date

如何比較 SQL 中的日期?

  • May 12, 2020

在數據庫表中,我創建了一個日期屬性,但我已將其類型設置為varcharand not Date。我的問題是:我仍然可以在 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 數據類型將導致一些意外行為。

引用自:https://dba.stackexchange.com/questions/109401