tsql - SQL Server 2008 R2 中的日期时间计算

标签 tsql sql-server-2008-r2

我的数据库表中有 3 列 - CreatedExpiresExpiration_IntervalCreatedExpires 都是datetimeoffset(0) 并且Expiration_Interval 的数据类型是Time(0)

Created 在插入新行时被 SYSUTCDATETIME() 填充。 Expiration_Interval 的数据以 hh:mm:ss 格式在输入 XML 中提供,并被提取和填充。要求是用 Created+Expiration_Interval 填充 Expires 列。这是我的方法:

  INSERT INTO SESSIONS
  SELECT 
    Expiration_Interval,
    SYSUTCDATETIME(),
    DATEADD(s,((DATEPART(hh,Timeout)*3600)+(DATEPART(mi,Timeout)*60)+    DATEPART(ss,Timeout)),SYSUTCDATETIME())
  FROM input_xml -- CTE with shredded XML data

有没有更简单的方法来做到这一点?这是在 SQL Server 2008 R2 上

最佳答案

您可以将 Timeout 转换为 datetime 并使用 + 将时间添加到 SYSUTCDATETIME()

SYSUTCDATETIME()+cast(Timeout as datetime)

关于tsql - SQL Server 2008 R2 中的日期时间计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8653716/

相关文章:

.net - 从 .NET sqlcommand 传递给 SQL 的值不正确

sql-server - 改进报告存储过程执行时间 - 调整临时表?

sql-server - sql server 2008 R2 远程过程调用失败

SQL 条件排序依据

sql - 将整个sql脚本插入变量中

sql - 在 SQL 中将多行合并为一行

sql-server - 计算多列行的哈希值或校验和的最有效方法?

xml - 如何在 SQL Server 2008 R2 中读取 XML 的一部分作为 XML

SQLXML 没有 XML 编码?

sql - 具有输出参数的存储过程与表值函数?