【问题标题】:Subtract hours from SQL Server 2012 query result从 SQL Server 2012 查询结果中减去小时数
【发布时间】:2015-12-29 23:44:21
【问题描述】:

我正在 SQL Server 2012 Management Studio 中对警报系统信号自动化平台数据库运行查询,但遇到了一些问题。

我的查询运行良好,但我无法将结果细化到我想要的水平。

我选择了一些格式为DATETIME 的列,我只想取列中的值并从中减去 4 小时(即从 GMT 到 EST),然后输出 那个 em> 值进入查询结果。

我能找到的关于DATESUB() 或类似命令的所有文档都显示了语法中带有特定DATETIME 的示例,我没有任何具体内容,只有138,000 行包含我想调整时区的列为了。

我是否遗漏了一些重要内容,或者在我处理查询结果后我是否需要继续手动调整?此外,如果它有所作为,我有一个只读访问级别,并且对以任何方式更改表数据不感兴趣。

【问题讨论】:

  • 你尝试过 dateadd 吗?
  • DATEADD() 也可以“添加”一个负值,但它仍在语法末尾寻找开始日期。我要减去的“开始日期”已经是查询结果的一部分。我想调整 -4 小时的 那个 日期。
  • DATEADD(日期部分,数字,日期)

标签: sql sql-server datetime sql-server-2012


【解决方案1】:

嗯,对于初学者来说,您需要知道您不仅可以在静态值上使用函数,还可以在列上使用它们。

看来你想要的很简单:

SELECT DATEADD(HOUR,-4,YourColumnWithDateTimes)
FROM dbo.YourTable

【讨论】:

  • 那么我会在我通常使用的地方使用 DATEADD() SELECT eventname as 'Event', DATEADD(HOUR,-4,eventtime) as 'Time' FROM dbo.events
  • 太棒了!感谢您的帮助。我刚刚运行了它,它运行良好。非常感谢。
【解决方案2】:

也许会有所帮助

SELECT DATEPART(HOUR, GETDATE()); 

DATEPART docs from MSDN

【讨论】:

  • 看起来我已经找到了我的问题的答案,但我将使用该链接来更加熟悉。谢谢!
猜你喜欢
  • 1970-01-01
  • 2019-11-07
  • 1970-01-01
  • 2019-11-20
  • 1970-01-01
  • 2021-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多