SQL 服务器:获取日期和时间范围的行
SQL Server : get rows for date and time range
我有这个table:
CREATE TABLE [dbo].[#TABLE_1]
(
[numreq] [INT] NULL,
[rangetime] [NVARCHAR](300) NULL
) ON [PRIMARY]
INSERT INTO [dbo].[#TABLE_1]
VALUES ('2', '2019-09-27 07:30:00.000'),
('3', '2019-09-27 21:30:00.000'),
('4', '2019-09-28 09:30:00.000'),
('5', '2019-09-28 21:30:00.000'),
('6', '2019-09-29 09:30:00.000'),
('7', '2019-09-29 21:30:00.000'),
('8', '2019-09-30 07:30:00.000'),
('9', '2019-09-30 10:00:00.000'),
('9', '2019-09-30 11:00:00.000'),
('9', '2019-10-01 10:00:00.000')
我想在 09:00 之前 09:00 的时间范围内 select 行。如果今天是 10 月 1 日星期二,那么我想要从 28.09.2019 09:00
到 01.10.2019 09:00
.
的所有内容
我使用了下面的查询,但没有得到所需的结果。
select *
from [dbo].[#TABLE_1]
where (((DATEPART(DW,getdate())) = 2 AND (CAST (rangetime as DATE)) >= (CAST(DATEADD(hh,-7,getdate())-3 as DATE)) and (CAST(rangetime as TIME)>='09:00:00')))
order by rangetime desc
如何解决?
您的问题陈述方式似乎是您想要从 昨天 09:00
到 今天 09:00
的行].那将是这样的:
SELECT * FROM [#TABLE_1]
WHERE [rangetime] between DATEADD(hour,-15,DATEDIFF(d,0,GETDATE())) and DATEADD(hour,9,DATEDIFF(d,0,GETDATE()))
输出:
6 2019-09-29 09:30:00.000
7 2019-09-29 21:30:00.000
8 2019-09-30 07:30:00.000
但是你写了
everything from 28.09.2019 09:00 until 01.10.2019 09:00.
这对我来说有点难以理解...也许您想要从今天三天前09:00
到今天[=的行35=]09:00
? 3 天还是 72 小时?
SELECT * FROM [#TABLE_1]
WHERE [rangetime] between DATEADD(hour,-63,DATEDIFF(d,0,GETDATE())) and DATEADD(hour,9,DATEDIFF(d,0,GETDATE()))
输出
3 2019-09-27 21:30:00.000
4 2019-09-28 09:30:00.000
5 2019-09-28 21:30:00.000
6 2019-09-29 09:30:00.000
7 2019-09-29 21:30:00.000
8 2019-09-30 07:30:00.000
我有这个table:
CREATE TABLE [dbo].[#TABLE_1]
(
[numreq] [INT] NULL,
[rangetime] [NVARCHAR](300) NULL
) ON [PRIMARY]
INSERT INTO [dbo].[#TABLE_1]
VALUES ('2', '2019-09-27 07:30:00.000'),
('3', '2019-09-27 21:30:00.000'),
('4', '2019-09-28 09:30:00.000'),
('5', '2019-09-28 21:30:00.000'),
('6', '2019-09-29 09:30:00.000'),
('7', '2019-09-29 21:30:00.000'),
('8', '2019-09-30 07:30:00.000'),
('9', '2019-09-30 10:00:00.000'),
('9', '2019-09-30 11:00:00.000'),
('9', '2019-10-01 10:00:00.000')
我想在 09:00 之前 09:00 的时间范围内 select 行。如果今天是 10 月 1 日星期二,那么我想要从 28.09.2019 09:00
到 01.10.2019 09:00
.
我使用了下面的查询,但没有得到所需的结果。
select *
from [dbo].[#TABLE_1]
where (((DATEPART(DW,getdate())) = 2 AND (CAST (rangetime as DATE)) >= (CAST(DATEADD(hh,-7,getdate())-3 as DATE)) and (CAST(rangetime as TIME)>='09:00:00')))
order by rangetime desc
如何解决?
您的问题陈述方式似乎是您想要从 昨天 09:00
到 今天 09:00
的行].那将是这样的:
SELECT * FROM [#TABLE_1]
WHERE [rangetime] between DATEADD(hour,-15,DATEDIFF(d,0,GETDATE())) and DATEADD(hour,9,DATEDIFF(d,0,GETDATE()))
输出:
6 2019-09-29 09:30:00.000
7 2019-09-29 21:30:00.000
8 2019-09-30 07:30:00.000
但是你写了
everything from 28.09.2019 09:00 until 01.10.2019 09:00.
这对我来说有点难以理解...也许您想要从今天三天前09:00
到今天[=的行35=]09:00
? 3 天还是 72 小时?
SELECT * FROM [#TABLE_1]
WHERE [rangetime] between DATEADD(hour,-63,DATEDIFF(d,0,GETDATE())) and DATEADD(hour,9,DATEDIFF(d,0,GETDATE()))
输出
3 2019-09-27 21:30:00.000
4 2019-09-28 09:30:00.000
5 2019-09-28 21:30:00.000
6 2019-09-29 09:30:00.000
7 2019-09-29 21:30:00.000
8 2019-09-30 07:30:00.000