SQL Server中的特定时间范围查询

时间:2009-05-19 21:43:22

标签: sql-server-2005 datetime

我正在尝试查询特定的时间范围:

  • 即。 3/1/2009 - 3/31/2009
  • 每天上午6点至晚上10点之间
  • 周二/周三/周四

我已经看到你可以获得特定范围的数据,但仅限于开始结束,这是非常具体的。我没有看到任何可以直接帮助我的SQL Server命令,所以其他人对你如何形成这个有任何想法吗?

我见过this,但我认为这个范围几乎不够具体。

谢谢!

4 个答案:

答案 0 :(得分:29)

我假设您希望所有这三个作为选择标准的一部分。您需要在您的位置使用一些语句,但它们与您的问题所包含的链接类似。

SELECT *
  FROM MyTable
  WHERE [dateColumn] > '3/1/2009' AND [dateColumn] <= DATEADD(day,1,'3/31/2009') 
        --make it inclusive for a datetime type
    AND DATEPART(hh,[dateColumn]) >= 6 AND DATEPART(hh,[dateColumn]) <= 22 
        -- gets the hour of the day from the datetime
    AND DATEPART(dw,[dateColumn]) >= 3 AND DATEPART(dw,[dateColumn]) <= 5 
        -- gets the day of the week from the datetime

希望这有帮助。

答案 1 :(得分:6)

你可以试试这个(今天我没有sql server,所以我无法验证语法,抱歉)

select attributeName
  from tableName
 where CONVERT(varchar,attributeName,101) BETWEEN '03/01/2009' AND '03/31/2009'
   and CONVERT(varchar, attributeName,108) BETWEEN '06:00:00' AND '22:00:00'
   and DATEPART(day,attributeName) BETWEEN 2 AND 4

答案 2 :(得分:1)

我(在PGadmin4上使用PostgrSQL)查询2017年11月21日中午或之后的结果,如下所示(考虑到数据库中小时的显示格式):

select * from Table1 where FIELD >='2017-11-21 12:00:00' 

答案 3 :(得分:0)

select * from table where 
(dtColumn between #3/1/2009# and #3/31/2009#) and 
(hour(dtColumn) between 6 and 22) and 
(weekday(dtColumn, 1) between 2 and 4)