我的数据库表中有CreatedDate
个datetime
列。我想要获取CreatedDate
且当前时差超过1小时的行
答案 0 :(得分:1)
Select * from TableName where (DateDiff(hh,CreatedDate,GetDate())>1
答案 1 :(得分:1)
如果您只关心小时值本身,而不是任何60分钟的时间段,@ Amit Singh的回答是有效的。
使用DATEDIFF(hh)的问题是13:01和14:59只相隔一个“小时”。
像:
select datediff(hh,'1/1/2001 13:59','1/1/2001 14:01')
我认为这样做可以解决这个问题:
declare @cd datetime='9/12/2013 03:10';
declare @t table(id int,CreatedDate datetime);
insert @t select 1,'9/12/2013 02:50';
insert @t select 2,'9/12/2013 02:05';
select * from @t where @cd>(DateAdd(hh,1,CreatedDate))
答案 2 :(得分:1)
Dan Bellandi提出了一个有效的观点,但如果日期相隔60分钟真的很重要,那么只需检查它们是否相隔60分钟:
SELECT * FROM TableName WHERE DATEDIFF(MINUTE, DateColumnName, GETDATE()) >= 60
答案 3 :(得分:0)
如果您不希望将来创建任何行......
where CreatedDate < dateadd(hour, -1, getdate())
答案 4 :(得分:0)
CREATE TABLE trialforDate
(
id INT NULL,
NAME VARCHAR(20) NULL,
addeddate DATETIME NULL
)
INSERT INTO trialforDate VALUES (1,'xxxx',GETDATE())
INSERT INTO trialforDate VALUES (2,'yyyy',GETDATE())
INSERT INTO trialforDate VALUES (1,'zzzz','2013-09-12 11:20:40.533')
SELECT *
FROM trialforDate
WHERE GETDATE() > DATEADD(HOUR, 1, addeddate)
答案 5 :(得分:-1)
C#代码
DateTime param1= System.DateTime.Now;
DateTime param2= System.DateTime.Now.AddHours(1);
SQL查询:
SELECT * FROM TableName WHERE CreatedDate = param1 AND CreatedDate =param2;