sql-server-2008 - tsql DATEDIFF 在几分钟内调用而不舍入秒数

标签 sql-server-2008 tsql datetime datediff

我在 SQL Server 2008 中进行 DATEDIFF() 调用作为存储过程的一部分,它可能会返回小至 3 秒或更短的值。我希望格式为 MM:SS(即 3 秒时为 00:03)。我最初是在几分钟内使用调用:

DATEDIFF(mi, SELECT MAX(startDate) FROM myTable , SELECT MAX(EndDate) FROM myTable)

但是,这是四舍五入到最接近的分钟,因此删除了秒值。如何使用 DATEDIFF 实现上面指定的格式?

最佳答案

精确到秒:

DATEDIFF(ss, SELECT MAX(startDate) FROM myTable, SELECT MAX(EndDate) FROM myTable)

Ref .

注意:DATEDIFF 不会为您提供“格式”。它只返回一个整数。所以你需要适本地转换/格式化。

我怀疑您最容易得到的最接近的方法是使用格式为 108CAST:

select convert(char(8), dateadd(ss, DATEDIFF(ss, SELECT MAX(startDate) FROM myTable, 
                                                 SELECT MAX(EndDate) FROM myTable)), 
               cast(0 as DateTime)) , 108)

例如

select convert(char(8), dateadd(ss, DATEDIFF(ss, '2012-12-16 12:00:00', 
                                                 '2012-12-16 12:13:09'), 
                                cast(0 as DateTime)), 108)

返回:

00:13:09

[注意:如果你想四舍五入到最接近的3秒,你可以修改这个:TSQL: Round to Nearest 15 Minute Interval ]

关于sql-server-2008 - tsql DATEDIFF 在几分钟内调用而不舍入秒数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13907274/

相关文章:

scala - DateTimeFormat解析错误:格式无效: “2018-04-02T21:57:05.091Z”在 “T21:57:05.091Z”处格式错误

php - 检查时间范围是否与另一个日期时间范围冲突

SQL插入多语言数据 - 丢失变音符号等

sql - 在 SQL Server 中将 XML UTF-8 编码的字符串转换为 XML 数据类型

SQL 查询变量 nvarchar(max) 不能存储超过 4000 个字符

python - 值错误 : time data '24:00' does not match format '%H:%M'

sql-server - 动态备份文件名

.net - : Constraint or FK? 对于状态列有什么更好的

SQL Server在update语句中执行存储过程

SQL Server 2005/2008 不使用动态 SQL 的带参数的 Group By 语句?