显示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列,这样您查询反对它的时间与日期相结合。如果日期和时间正确存储,这将很容易。

如果你要存储DATETIME值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

回到顶部