MsSql

关注公众号 jb51net

关闭
首页 > 数据库 > MsSql > SQL Server计算时间差

SQL Server计算两个时间相差的示例代码

作者:Davina_yu

在SQL Server中,处理时间数据并计算时间差值是常见的需求,SQL Server提供了一系列函数来帮助我们完成这些操作,本文给大家介绍了SQL Server计算两个时间相差的方法,需要的朋友可以参考下

在 SQL Server 中,计算两个时间字符串之间的差值

1、计算两个时间字符串之间的差值

案例:计算 starttime 和 endtime 两个时间点之间的时间差(以秒为单位)。

test 表中有以下数据:

starttimeendtime
2024-10-12 10:00:002024-10-12 10:30:00
2024-10-12 11:00:002024-10-12 11:45:00

以下是完整的 SQL 语句:

SELECT DATEDIFF(SECOND, CAST(starttime AS DATETIME), CAST(endtime AS DATETIME)) AS "时间差" FROM test;

解释

执行上述查询后,结果将是:

时间差
1800
2700

2、字符串转换成日期/时间类型

假设 starttime 是一个 VARCHAR 类型的列,存储了形如 ‘2024-10-12 10:00:00’ 的字符串

SELECT CAST(starttime AS DATETIME) AS StartTimeAsDatetime FROM test;

test是包含 starttime 列的表名。查询会返回一个新的列 StartTimeAsDatetime,其中包含了转换后的 DATETIME 值。

例如,如果 starttime 的格式是 ‘MM/dd/yyyy HH:mm:ss’ , ‘10/12/2024 12:09:36’ 的字符串

SELECT CONVERT(DATETIME, starttime, 2) AS StartTimeAsDatetime FROM test;

 2 是样式代码,表示输入的日期时间字符串格式为 'MM/dd/yyyy HH:mm:ss'
 样式代码 2 实际上对应的是 'yy.mm.dd' 格式的日期,而不是包含时间部分的完整日期时间。
 如果你的 starttime 字符串包含了时间部分,并且格式是 'MM/dd/yyyy HH:mm:ss',你应该使用样式代码 102 或其他适当的样式代码。

以下是一些常见的日期时间样式代码:

样式代码日期格式
102mm/dd/yyyy
103dd/mm/yyyy
104dd.mm.yyyy
105dd-mm-yyyy
106dd mon yyyy
107mon dd, yyyy
108hh:mi:ss
109mon dd yyyy hh:mi:ss:mmmAM (or PM)
110mm-dd-yyyy
111yyyy/mm/dd
112yyyymmdd
113dd mmm yyyy hh:mi:ss:mmm(24h)

假设你的 starttime 字符串格式是 ‘MM/dd/yyyy HH:mm:ss’,你可以这样使用 CONVERT:

SELECT CONVERT(DATETIME, starttime, 102) AS StartTimeAsDatetime FROM test;

3、计算两个日期和时间之间的差值

案例:

计算 startdate 和 enddate 两个日期之间的天数差。

test 表中有以下数据:

startdateenddate
2024-10-122024-10-15
2024-10-182024-10-22
SELECT DATEDIFF(DAY, startdate, enddate) AS "天数差"
FROM test;

执行上述查询后,结果将是:

天数差
3
4

模板

select DATEDIFF(unit, startdate, enddate) from test

到此这篇关于SQL Server计算两个时间相差的示例代码的文章就介绍到这了,更多相关SQL Server计算时间差内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文