如何查询一定范围内的DateTime数据库字段?
我正在使用SQL SERVER 2005
错误代码如下
SELECT *
FROM TABLENAME
WHERE DateTime >= 12/04/2011 12:00:00 AM
AND DateTime <= 25/05/2011 3:53:04 AM
请注意,我需要获取特定时间范围内的行。例如,10分钟的时间范围。
目前,SQL返回的语法不正确,位于'12'附近。”
Answers:
您错过了单引号:
SELECT *
FROM TABLENAME
WHERE DateTime >= '12/04/2011 12:00:00 AM' AND DateTime <= '25/05/2011 3:53:04 AM'
另外,建议使用ISO8601格式YYYY-MM-DDThh:mm:ss.nnn [Z],因为这将不依赖于服务器的本地文化。
SELECT *
FROM TABLENAME
WHERE
DateTime >= '2011-04-12T00:00:00.000' AND
DateTime <= '2011-05-25T03:53:04.000'
您需要在要传递给日期的字符串周围加上引号,也可以在此处使用BETWEEN:
SELECT *
FROM TABLENAME
WHERE DateTime BETWEEN '04/12/2011 12:00:00 AM' AND '05/25/2011 3:53:04 AM'
有关如何在指定格式时将字符串显式转换为日期的示例,请参见以下问题的答案:
您可以执行以下代码
SELECT Time FROM [TableName] where DATEPART(YYYY,[Time])='2018' and DATEPART(MM,[Time])='06' and DATEPART(DD,[Time])='14
select getdate()
O/P
----
2011-05-25 17:29:44.763
select convert(varchar(30),getdate(),131) >= '12/04/2011 12:00:00 AM'
O/P
---
22/06/1432 5:29:44:763PM
其他人已经说过,SQL Server中的日期文字需要用单引号引起来,但是我想补充一点,您可以通过两种方式解决月/日混合问题(即,将25视为月份而将5视为月份的问题)。天) :
Convert(datetime, 'datevalue', style)
在样式是数字样式代码之一的地方使用显式形式,请参阅Cast和Convert。style参数不仅用于将日期转换为字符串,还用于确定如何将字符串解析为日期。
对于存储为字符串的日期,请使用与区域无关的格式。我使用的是“ yyyymmdd hh:mm:ss”,或者考虑使用ISO格式yyyy-mm-ddThh:mi:ss.mmm
。根据实验,没有其他语言不变的格式字符串。(尽管我认为您可以在最后加入时区,请参见上面的链接)。
where date = 1/12/2011
,那么它似乎可以工作,但实际上将2011年1月1日除以零,然后将零作为最小可能的datetime值。