[英]Is it possible to convert a column from string to datetime type in a SQL statement?
[英]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
(還有一些特別命名的函數,例如MONTH
和YEAR
,但我更喜歡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.