Datetime 两个日期之间的差异&;SQL中日期时间字段中的时间

Datetime 两个日期之间的差异&;SQL中日期时间字段中的时间,datetime,datediff,Datetime,Datediff,可能重复: 我有两个datetime字段,应该计算它们之间的时间,包括时间字段 P<24天时,应考虑1天和24~48小时为2天。 < P>听起来好像DATEDIFF函数有帮助。您可以选择DatePart,这样就可以对输出进行非常精细的处理 发件人: 结果: DiffDate 61 如果您谈论的是SQL Server,那么这就是您所需要的 比如: SELECT DATEDIFF(d, StartDate, EndDate) FROM tableName 。。。只需用StartDate和En

可能重复:

我有两个datetime字段,应该计算它们之间的时间,包括时间字段


P<24天时,应考虑1天和24~48小时为2天。

< P>听起来好像DATEDIFF函数有帮助。您可以选择DatePart,这样就可以对输出进行非常精细的处理

发件人:

结果:

DiffDate
61

如果您谈论的是SQL Server,那么这就是您所需要的

比如:

SELECT DATEDIFF(d, StartDate, EndDate) FROM tableName
。。。只需用StartDate和EndDate替换列名,用tableName替换实际的表名。 此外,您还可以将“d”字符替换为其他日期部分,例如,如果您想查找以月、年等为单位的日期差异

*更新*

@萨蒂什,试着跟着这个。我认为您可能遇到的问题与SQL的DATEDIFF函数中的舍入有关。解决这个问题的方法是降低到一个更细粒度的级别,比如几分钟而不是几天。请参阅下面的示例代码,并比较输出:

DECLARE @tblDummy TABLE(Value1 SMALLDATETIME, Value2 SMALLDATETIME, [Description] NVARCHAR(50))
INSERT INTO @tblDummy (Value1, Value2, [Description]) VALUES ('2012-01-01 12:00', '2012-01-02 01:00', '13 hours 0 mins')
INSERT INTO @tblDummy (Value1, Value2, [Description]) VALUES ('2012-01-01 12:00', '2012-01-02 11:59', '23 hours 59 mins')
INSERT INTO @tblDummy (Value1, Value2, [Description]) VALUES ('2012-01-01 12:00', '2012-01-02 13:00', '25 hours 0 mins')
INSERT INTO @tblDummy (Value1, Value2, [Description]) VALUES ('2012-01-01 12:00', '2012-01-03 12:00', '48 hours 0 mins')
INSERT INTO @tblDummy (Value1, Value2, [Description]) VALUES ('2012-01-01 12:00', '2012-01-03 12:01', '48 hours 1 min')
INSERT INTO @tblDummy (Value1, Value2, [Description]) VALUES ('2012-01-01 12:00', '2012-01-04 00:00', '60 hours 0 mins')

-- Attempt 1: Standard date diff
SELECT DATEDIFF(d, Value1, Value2) [diff], [Description]
FROM @tblDummy

-- Attempt 2: Date diff taking it down to the minutes level
SELECT CEILING((DATEDIFF(minute, Value1, Value2) / 60.0) / 24.0) [diff], [Description]
FROM @tblDummy
以下是输出:


我相信第二次尝试可以满足你的需求。如果这对你没有帮助,那么我恐怕就是不明白你的问题。

嗨,史蒂夫,我想要日期字段中日期小时和分钟之间的差值,并根据差值的输出将差值转换为1天或2天。或者,我很难准确理解你想要的是什么。您是否可以更新您的问题以包含数据库表中的一些数据,所以我们可以先看看你是否做了什么不寻常的事情。嗨,Steve,我需要的是,如果我有24:39的差异,那么它应该显示为1天,25:10为2天,49:10为3天,就像wise一样。希望我现在清楚了,数据库表中存储的值是否为datetime类型?它们在数据库中存储为smalldatetimehi NIce YellowEgg我想要日期字段中日期小时和分钟之间的差异,并根据差异的输出将差异转换为1天或2天。您也可以在日期字段中使用时间,我将进行修改
DECLARE @tblDummy TABLE(Value1 SMALLDATETIME, Value2 SMALLDATETIME, [Description] NVARCHAR(50))
INSERT INTO @tblDummy (Value1, Value2, [Description]) VALUES ('2012-01-01 12:00', '2012-01-02 01:00', '13 hours 0 mins')
INSERT INTO @tblDummy (Value1, Value2, [Description]) VALUES ('2012-01-01 12:00', '2012-01-02 11:59', '23 hours 59 mins')
INSERT INTO @tblDummy (Value1, Value2, [Description]) VALUES ('2012-01-01 12:00', '2012-01-02 13:00', '25 hours 0 mins')
INSERT INTO @tblDummy (Value1, Value2, [Description]) VALUES ('2012-01-01 12:00', '2012-01-03 12:00', '48 hours 0 mins')
INSERT INTO @tblDummy (Value1, Value2, [Description]) VALUES ('2012-01-01 12:00', '2012-01-03 12:01', '48 hours 1 min')
INSERT INTO @tblDummy (Value1, Value2, [Description]) VALUES ('2012-01-01 12:00', '2012-01-04 00:00', '60 hours 0 mins')

-- Attempt 1: Standard date diff
SELECT DATEDIFF(d, Value1, Value2) [diff], [Description]
FROM @tblDummy

-- Attempt 2: Date diff taking it down to the minutes level
SELECT CEILING((DATEDIFF(minute, Value1, Value2) / 60.0) / 24.0) [diff], [Description]
FROM @tblDummy