簡體   English   中英

關於DateTime類型的SQL LIKE語句

[英]SQL LIKE Statement on a DateTime Type

如何在SQL Server中的DateTime數據類型列上執行LIKE語句?

如果我運行以下SQL,它將返回2009年的所有日期。

SELECT * FROM MyTable where CheckDate LIKE '%2009%'

但是,如果我想要10月,11月和12月的所有日期,我希望能夠做到以下幾點:

SELECT * FROM MyTable where CheckDate LIKE '%2009-1%'

但這沒有給我任何回報!

我給用戶一個過濾選項,他們輸入日期字符串,當他們輸入我過濾數據。 因此,如果他們鍵入'20',我想在日期內返回所有日期為'20'(所以這可能是所有2012日期或日期值,如06/20/1999)

有人可以幫忙嗎?

我正在使用SQL Server 2008。

提前致謝。

您可以使用DATEPART函數來提取部分日期。 它還應該使您的查詢更明確地了解您要實現的目標:

SELECT * FROM MyTable
where DATEPART(year,CheckDate)=2009 and
      DATEPART(month,CheckDate) between 10 and 12

(還有一些特別命名的函數,例如MONTHYEAR ,但我更喜歡DATEPART的一致性,因為它可以訪問datetime所有組件)

您應該盡量避免將datetime視為具有任何類型的字符串格式。 將它們視為字符串是我們遇到的最大錯誤來源之一。

如果需要使用Like運算符(由於某種原因),則必須將DateTime列轉換為varchar

SELECT * 
FROM MyTable 
WHERE CONVERT(VARCHAR, CheckDate, 120) LIKE '%2009-1%'

你可以使用這樣的東西:

SELECT * 
FROM MyTable 
WHERE CheckDate >= '2009-10-01' AND CheckDate < '2010-01-01';

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM