som*_*ool 72 sql datediff sql-server-2005 date
我有两列:
job_start job_end
2011-11-02 12:20:37.247 2011-11-02 13:35:14.613
Run Code Online (Sandbox Code Playgroud)
如何使用T-SQL查找作业开始和作业结束之间经过的原始时间量?
我试过这个:
select (job_end - job_start) from tableA
Run Code Online (Sandbox Code Playgroud)
但结果是:
1900-01-01 01:14:37.367
Run Code Online (Sandbox Code Playgroud)
Jam*_*ill 122
看看这个DateDiff()
功能.
-- Syntax
-- DATEDIFF ( datepart , startdate , enddate )
-- Example usage
SELECT DATEDIFF(DAY, GETDATE(), GETDATE() + 1) AS DayDiff
SELECT DATEDIFF(MINUTE, GETDATE(), GETDATE() + 1) AS MinuteDiff
SELECT DATEDIFF(SECOND, GETDATE(), GETDATE() + 1) AS SecondDiff
SELECT DATEDIFF(WEEK, GETDATE(), GETDATE() + 1) AS WeekDiff
SELECT DATEDIFF(HOUR, GETDATE(), GETDATE() + 1) AS HourDiff
...
Run Code Online (Sandbox Code Playgroud)
Vin*_*zzi 19
你可以使用DATEDIFF函数来获得分钟,秒,天等的差异.
SELECT DATEDIFF(MINUTE,job_start,job_end)
Run Code Online (Sandbox Code Playgroud)
MINUTE显然会以分钟为单位返回差异,您也可以使用DAY,HOUR,SECOND,YEAR(有关完整列表,请参阅书籍在线链接).
如果你想得到想象,你可以用不同的方式显示,例如75分钟可以显示如下:01:15:00:0
以下是为SQL Server 2005和2008执行此操作的代码
-- SQL Server 2005
SELECT CONVERT(VARCHAR(10),DATEADD(MINUTE,DATEDIFF(MINUTE,job_start,job_end),'2011-01-01 00:00:00.000'),114)
-- SQL Server 2008
SELECT CAST(DATEADD(MINUTE,DATEDIFF(MINUTE,job_start,job_end),'2011-01-01 00:00:00.000') AS TIME)
Run Code Online (Sandbox Code Playgroud)
小智 12
将结果转换为结果,TIME
结果将以时间格式显示间隔的持续时间.
select CAST(job_end - job_start) AS TIME(0)) from tableA
Run Code Online (Sandbox Code Playgroud)
小智 5
我认为你需要job_start和job_end之间的时间差距.
试试这个...
select SUBSTRING(CONVERT(VARCHAR(20),(job_end - job_start),120),12,8) from tableA
Run Code Online (Sandbox Code Playgroud)
我最终得到了这个.
01:14:37
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
349432 次 |
最近记录: |