简单的DateTime sql查询

ove*_*ove 79 sql t-sql sql-server sql-server-2005 sql-server-2008

如何在一定范围内查询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
Run Code Online (Sandbox Code Playgroud)

请注意,我需要在特定时间范围内获取行.例如,10分钟的时间范围.

目前SQL返回"12"附近的语法不正确."

Ale*_*Aza 109

你错过了单引号:

SELECT * 
FROM TABLENAME 
WHERE DateTime >= '12/04/2011 12:00:00 AM' AND DateTime <= '25/05/2011 3:53:04 AM'
Run Code Online (Sandbox Code Playgroud)

此外,建议使用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'
Run Code Online (Sandbox Code Playgroud)

  • @Eric - yyyymmdd没时间. (3认同)

Mil*_*ric 8

你需要在你试图作为日期传递的字符串周围引用,你也可以在这里使用BETWEEN:

 SELECT *
   FROM TABLENAME
  WHERE DateTime BETWEEN '04/12/2011 12:00:00 AM' AND '05/25/2011 3:53:04 AM'
Run Code Online (Sandbox Code Playgroud)

有关如何在指定格式时将字符串显式转换为日期的示例,请参阅以下问题的答案:

Sql Server字符串到日期转换


小智 6

这在SQL Server 2005和2008中都适用于我:

SELECT * from TABLE
WHERE FIELDNAME > {ts '2013-02-01 15:00:00.001'}
  AND FIELDNAME < {ts '2013-08-05 00:00:00.000'}
Run Code Online (Sandbox Code Playgroud)


小智 6

您可以执行以下代码

SELECT Time FROM [TableName] where DATEPART(YYYY,[Time])='2018' and DATEPART(MM,[Time])='06' and DATEPART(DD,[Time])='14
Run Code Online (Sandbox Code Playgroud)