• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

显示SQL Server中选定日期的最近24小时内

sql 来源:moe 6次浏览

我的表中有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() 

版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)