Sun*_*Sun 11 sql datetime sql-server-2008
如何在SQL Server中LIKE的DateTime数据类型列上执行语句?
如果我运行以下SQL,它将返回2009年的所有日期.
SELECT * FROM MyTable where CheckDate LIKE '%2009%'
Run Code Online (Sandbox Code Playgroud)
但是,如果我想要10月,11月和12月的所有日期,我希望能够做到以下几点:
SELECT * FROM MyTable where CheckDate LIKE '%2009-1%'
Run Code Online (Sandbox Code Playgroud)
但这没有给我任何回报!
我给用户一个过滤选项,他们输入日期字符串,当他们输入我过滤数据.因此,如果他们键入'20',我想在日期内返回所有日期为'20'(所以这可能是所有2012日期或日期值,如06/20/1999)
有人可以帮忙吗?
我正在使用SQL Server 2008.
提前致谢.
Dam*_*ver 20
您可以使用该DATEPART功能提取部分日期.它还应该使您的查询更明确地了解您要实现的目标:
SELECT * FROM MyTable
where DATEPART(year,CheckDate)=2009 and
DATEPART(month,CheckDate) between 10 and 12
Run Code Online (Sandbox Code Playgroud)
(还有特别命名的函数,例如MONTH和YEAR,但我更喜欢DATEPART一致性,因为它可以访问a的所有组件datetime)
您应该尽量避免将datetimes视为具有任何类型的字符串格式.将它们视为字符串是我们遇到的最大错误来源之一.
你可以使用这样的东西:
SELECT *
FROM MyTable
WHERE CheckDate >= '2009-10-01' AND CheckDate < '2010-01-01';
Run Code Online (Sandbox Code Playgroud)
如果您需要使用Like运算符(由于某种原因),您必须将DateTime列转换为varchar.
SELECT *
FROM MyTable
WHERE CONVERT(VARCHAR, CheckDate, 120) LIKE '%2009-1%'
Run Code Online (Sandbox Code Playgroud)