【问题标题】:SQL Server 2008 time stamp subtraction to get total seconds (the time stamps are always changing)SQL Server 2008 时间戳减法得到总秒数(时间戳总是在变化)
【发布时间】:2014-07-30 19:29:37
【问题描述】:

我对 SQL Server 的使用经验很少,需要一些帮助,因为我们的 DBA 已不在我们身边,我们正在寻找新的。

背景:我们在一个表中使用两列,customVariable2customVariable3customVariable2 是第一个时间戳,customVariable3 是第二个时间戳。时间格式为 HH:MM:SS PM PDT。

我需要找出customVariable2customVariable3 之间的时间差异,然后在另一列中显示该差异。如果它返回一个以秒或分钟为单位的值,那很好。

我不确定社区还需要我提供哪些其他信息才能提供帮助。如果需要更多信息,请告诉我,我可以提供。

在编写查询方面,我还是一个完全绿色的人。

提前感谢您的帮助。

【问题讨论】:

  • msdn.microsoft.com/en-us/library/ms189794.aspxDATEDIFF() 对你有用吗?
  • 我已经尝试过 DATEDIFF,但我可能没有正确格式化它,但我似乎无法让它工作,因为它需要一个完整的日期而不仅仅是一天中的某个时间。
  • customervariable2 和 3 的数据类型是什么,你能举个例子吗?
  • datediff 将接受时间、日期、smalldatetime、datetime、datetime2 或 datetimeoffset 作为开始/结束参数。正如克里斯托弗约翰逊所说,这很可能是最简单的路线。向我们提供您的代码示例将帮助我们缩小您的需求范围。

标签: sql sql-server time datediff


【解决方案1】:

这行得通:

select DATEDIFF(second,'12:12:12 PM','1:13:13 PM')

但事实并非如此:

select DATEDIFF(second,'12:12:12 PM PDT','1:13:13 PM PDT')

如果数据在 varchar 中并包含“PDT”,我怀疑你需要做的是

select DATEDIFF(second,replace(customVariable2,' PDT',''), replace(customVariable3,' PDT',''))

在评论中的附加问题之后,将不同的结果存储在时间戳中:

update tablename
set customVariable4 = DATEDIFF(second, replace(customVariable2,' PDT',''), replace(customVariable3,' PDT',''))

如果存储差异的列(我的示例代码中的 customVariable4)不存在,您需要将其添加到表中。

【讨论】:

  • 现在如何在返回值的结果中添加一个新列。目前,它会打开一个带有时差的新结果表。我需要将其插入原始表中。如果需要更多信息,请告诉我,我会添加。
  • 所以答案取决于该列是否已经存在或者您是否需要添加它。我将编辑我的答案,实际上发布时仍然太新。
猜你喜欢
  • 2015-11-28
  • 1970-01-01
  • 2017-07-24
  • 2020-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-20
  • 2012-01-21
相关资源
最近更新 更多