SQL SERVER 2008 在两个日期和两个时间之间过滤
SQL SERVER 2008 Filter between two dates and two times
我有一个名为“Date_Entered”的 DateTime 列,我需要在两个日期之间以及在这两个日期内进行过滤以在两个时间之间进行过滤(时间可能是第二天)。这是我的查询:
Declare @StartDate DateTime
Declare @EndDate DateTime
Declare @StartTime varchar(8)
Declare @EndTime varchar(8)
SELECT Date_Entered FROM MyTable
WHERE (Date_Entered BETWEEN '1/1/2014' AND '1/1/2015')
AND (CONVERT(varchar(8), Date_Entered, 108) >= '21:00:00' OR @StartTime IS NULL)
AND (CONVERT(varchar(8), Date_Entered, 108) <= '03:00:00' OR @EndTime IS NULL) --This time value is on the next day to cover a 6-hour period
所需的结果应显示日期范围内(2014 年)且发生在 6 小时范围内(夜间)的所有值:
2014-05-15 21:09:00
2014-08-12 02:45:00
2014-09-05 01:40:00
以上所有发生在日期范围(2014 年)和第二天晚上 9 点到凌晨 3 点之间。
我的问题是我需要搜索从晚上 9 点到第二天凌晨 3 点的时间(同一日期范围)
如果我在同一天搜索时间范围,例如从 21:00 到 23:59,我会得到结果,但是当第二天时间过去时,我将不会得到任何结果。
知道如何在 SQL.
中做到这一点
SSRS 2012 用于输入参数值。
Date_Entered 字段是具有日期和时间的 DateTime 类型。
是否可以将单独的日期和时间字段转换为单个日期时间字段?这是一个 link 相关的 SO 问题,它为您提供了将搜索条件转换为单个字段的选项。通过这样做,它应该允许您在单个查询中搜索午夜之后的时间。
SQL Server convert string to datetime
如果我正确理解了你的问题,那么下面的代码将给出正确的输出
create table a
(enddate datetime
)
insert into a values ('2014-05-15 21:09:00')
insert into a values ('2014-08-12 02:45:00')
insert into a values ('2014-09-05 01:40:00')
查询
SELECT enddate FROM a
WHERE (enddate BETWEEN '1/1/2014' AND '1/1/2015')
AND (CONVERT(varchar(8), enddate, 108) >= '21:00:00' )
or (CONVERT(varchar(8), enddate, 108) <= '03:00:00' )
结果
May, 15 2014 21:09:00
August, 12 2014 02:45:00
September, 05 2014 01:40:00
我有一个名为“Date_Entered”的 DateTime 列,我需要在两个日期之间以及在这两个日期内进行过滤以在两个时间之间进行过滤(时间可能是第二天)。这是我的查询:
Declare @StartDate DateTime
Declare @EndDate DateTime
Declare @StartTime varchar(8)
Declare @EndTime varchar(8)
SELECT Date_Entered FROM MyTable
WHERE (Date_Entered BETWEEN '1/1/2014' AND '1/1/2015')
AND (CONVERT(varchar(8), Date_Entered, 108) >= '21:00:00' OR @StartTime IS NULL)
AND (CONVERT(varchar(8), Date_Entered, 108) <= '03:00:00' OR @EndTime IS NULL) --This time value is on the next day to cover a 6-hour period
所需的结果应显示日期范围内(2014 年)且发生在 6 小时范围内(夜间)的所有值:
2014-05-15 21:09:00
2014-08-12 02:45:00
2014-09-05 01:40:00
以上所有发生在日期范围(2014 年)和第二天晚上 9 点到凌晨 3 点之间。 我的问题是我需要搜索从晚上 9 点到第二天凌晨 3 点的时间(同一日期范围)
如果我在同一天搜索时间范围,例如从 21:00 到 23:59,我会得到结果,但是当第二天时间过去时,我将不会得到任何结果。 知道如何在 SQL.
中做到这一点SSRS 2012 用于输入参数值。
Date_Entered 字段是具有日期和时间的 DateTime 类型。
是否可以将单独的日期和时间字段转换为单个日期时间字段?这是一个 link 相关的 SO 问题,它为您提供了将搜索条件转换为单个字段的选项。通过这样做,它应该允许您在单个查询中搜索午夜之后的时间。
SQL Server convert string to datetime
如果我正确理解了你的问题,那么下面的代码将给出正确的输出
create table a
(enddate datetime
)
insert into a values ('2014-05-15 21:09:00')
insert into a values ('2014-08-12 02:45:00')
insert into a values ('2014-09-05 01:40:00')
查询
SELECT enddate FROM a
WHERE (enddate BETWEEN '1/1/2014' AND '1/1/2015')
AND (CONVERT(varchar(8), enddate, 108) >= '21:00:00' )
or (CONVERT(varchar(8), enddate, 108) <= '03:00:00' )
结果
May, 15 2014 21:09:00
August, 12 2014 02:45:00
September, 05 2014 01:40:00