如果您正在谈论SQL Server,DATEDIFF就是您所需要的.
就像是:
SELECT DATEDIFF(d, StartDate, EndDate) FROM tableName
Run Code Online (Sandbox Code Playgroud)
...只需将StartDate和EndDate替换为列名,将tableName替换为实际的表名.此外,您可以将"d"字符替换为其他日期部分,例如,如果您想要查找以月,年等为单位的日期差异.
*更新*
@sateesh,试着按照这个.我认为你可能遇到的问题是在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
Run Code Online (Sandbox Code Playgroud)
这是输出:

我相信尝试2可以满足您的需求.如果这对你没有帮助,那我恐怕只是不明白你的问题.
| 归档时间: |
|
| 查看次数: |
77150 次 |
| 最近记录: |