显示SQL Server中选定日期的最近24小时内
我的表中有2列,一个有小时,另一个有日期。但是,我想显示从今天和选定小时起的最后24小时。例如,如果我选择上午10点30分作为我的随机小时,我想从上午10点30分和今天的日期显示最近24小时。显示SQL Server中选定日期的最近24小时内
我相信我的语法错了,请帮忙。
select ID, MilitaryHours, DT
from
myTable
where
MilitaryHours >= 1030 and DT >= DATEADD(HOUR, -24, GETDATE())
这里是我的DDL
CREATE TABLE myTabl (
[ID] [bigint] IDENTITY(1,1) NOT NULL,
[MilitaryHours] [nvarchar](20) NULL,
[DT] [datetime] NULL
CONSTRAINT [PK_Diary]
PRIMARY KEY CLUSTERED ([ID] ASC)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
回答:
你需要让你有一个正确的DATETIME
列,这样您查询反对它的时间与日期相结合。如果日期和时间正确存储,这将很容易。
如果你要存储DATE
和TIME
值seperately然后用正确的数据类型(即不VARCHAR/NVARCHAR
)
WITH FullDatetime AS (
SELECT
ID
, DATEADD(DAY, DATEDIFF(DAY, '19000101', DT),
CAST(LEFT(MilitaryHours,2) + ':' + RIGHT(MilitaryHours,2) + ':' + '00' AS DATETIME)) AS FullDatetime
FROM
myTable
)
SELECT
*
FROM
FullDatetime
WHERE
FullDatetime BETWEEN DATEADD(HOUR, -24, GETDATE()) AND GETDATE()
以上是 显示SQL Server中选定日期的最近24小时内 的全部内容, 来源链接: utcz.com/qa/259648.html