【问题标题】:How can I subtract an integer number of seconds from a DateTime如何从 DateTime 中减去整数秒数
【发布时间】:2026-01-19 14:25:01
【问题描述】:

我有这张桌子。

我想添加一个等于 Time_Record 减去 Idle_time 的列,该列以秒为单位,结果也是 DateTime。

【问题讨论】:

  • 提示:DATEADD().
  • ints 不是时代,您无法区分time_recordIdle_time,因为它们是完全不同的数据类型。这就像要求 decimalvarchar 的总和; 10.2 + 'car' 是什么?您真正想在这里实现什么?您的预期结果是什么? 做了什么来达到这些结果?为什么他们不工作?另外,请提供可消耗格式的数据,而不是图片。
  • 根据问题指南,请展示您的尝试并告诉我们您发现了什么(在本网站或其他地方)以及为什么它不能满足您的需求。

标签: sql sql-server tsql datetime


【解决方案1】:
select Idle_ID, Emp_ID, Idle_Time,
  dateadd(ss,-Idle_Time,Time_Record) as StartTime,
  Time_Record as EndTime
  from tbl_Idle;

【讨论】:

  • 如果该列已经是datetime,那么转换的意义何在?如果不是,在不指定格式的情况下盲目转换可能会导致错误。
  • 写“ss”而不是“second”实际上节省了多少精力?当您编写后者时,代码的可读性提高了多少?不要再把你的代码塞在一起了——养成良好的习惯。
  • @SM 或任何可以帮助您晚上入睡的东西。
【解决方案2】:

使用 DATEADD 函数添加秒数,如下所示'

DATEADD(ss,-Idle_Time,CONVERT(DATETIME,Time_Record))

【讨论】:

  • 这与上一个答案没有什么不同,一直到可能不必要的CONVERTCAST。如果该列已经是datetime,那么铸造的意义何在?如果不是这样,在不指定格式的情况下盲目转换可能会导致错误。