在 SQL 服务器中显示所选日期的最后 24 小时
Show last 24 hours from selected date in SQL Server
我的 table 中有 2 列,一列是时间,另一列是日期。但是,我想显示从今天开始的最后 24 小时和 selected 小时。例如,如果我 select 10:30 am 作为我的随机小时,我想显示从 10:30 am 到今天日期的最后 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
值,请使用正确的数据类型(即不是 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()
我的 table 中有 2 列,一列是时间,另一列是日期。但是,我想显示从今天开始的最后 24 小时和 selected 小时。例如,如果我 select 10:30 am 作为我的随机小时,我想显示从 10:30 am 到今天日期的最后 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
值,请使用正确的数据类型(即不是 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()