我有一個包含'inspect_date'列的表。此列包含格式爲DD/MM/YYYY HH:MM:SS的日期。我試圖找到2012年4月至2012年9月間的記錄。我可以在WHERE子句中添加哪些內容以便能夠執行此操作?選擇日期介於[this]和[that]之間的行
我使用Microsoft SQL Server 2008
我有一個包含'inspect_date'列的表。此列包含格式爲DD/MM/YYYY HH:MM:SS的日期。我試圖找到2012年4月至2012年9月間的記錄。我可以在WHERE子句中添加哪些內容以便能夠執行此操作?選擇日期介於[this]和[that]之間的行
我使用Microsoft SQL Server 2008
select * from table
where inspect_date>= '04/01/2012 00:00:00.000'
and inspect_date< '10/01/2012 00:00:00.000'
您可能希望包含'inspect_date'正好是'2012-04-01T00:00:00.000'的行所以......'inspect_date> ='2012-04-01T00:00:00.000和inspect_date <'2012-10-01T00:00:00.000''。 –
你是正確的先生 – UnhandledExcepSean
WHERE inspect_date BETWEEN '2012-04-01' and '2012-09-30'
這不會返回'inspect_date'例如爲'2012-09-30 09:00:00'的行。 –
這取決於。如果inspect_date是日期類型,那麼它將(並且在數據庫中將沒有2012-09-30 09:00:00值)。如果inspect_date是一個日期時間字段,那麼它需要是「BETWEEN'2012-04-01 00:00:00'和'2012-10-01 23:59:59'」 –
是的,它會使用'日期「但正如你在問題中看到的那樣,在這種情況下它不是一個」約會「。至於使用'2012年10月1日23:59:59',如果是這一天,你仍然會錯過最後一秒的數值。比如'2012-10-01 23:59:59.997' –
SELECT * FROM ....WHERE
inspect_date >= CAST('20120401' AS datetime) and
inspect_date < CAST('20121001' AS datetime)
for year selection you can use
WHERE DATEPART(YEAR,inspect_date)=2012
如果你需要的是靈活,嘗試之日起,除了像這樣:
WHERE MONTH(inspect_date) > 3 AND YEAR(inspect_date)= 2011
OR MONTH(inspect_date) <= 5 AND YEAR(inspect_date)= 2012
是什麼列的數據類型?它是'datetime'還是'char/varchar'? –