【问题标题】:How to set flag for time interval in T-SQL如何在 T-SQL 中设置时间间隔标志
【发布时间】:2020-12-23 19:52:57
【问题描述】:

我有一个包含 InsertDate 和 flag 字段的查询。我需要在前 10 分钟将标志设置为 Y,之后每 12 小时设置一次。这是我目前所拥有的,但硬编码根本不是一个理想的选择。

选择 InsertDate, case when DATEDIFF(MINUTE, MAX(InsertDate), GETDATE())

如何更新我的语法以摆脱硬编码?感谢您的帮助

【问题讨论】:

  • 这不是有效的 sql。示例表定义、数据和所需的输出会很有帮助。

标签: sql loops tsql datetime case


【解决方案1】:

您的查询一开始就不是有效的 SQL:它没有 from 子句,并且在 select 子句中同时包含 insertdatemax(insertdate) 是没有意义的。

底线,我认为你想要模算法:

case
    when datediff(minute, insertdate, getdate()) <= 10     then 'y' 
    when datediff(minute, insertdate, getdate()) % 720 = 0 then 'y'
    else 'n' 
end as flag

&lt;expr&gt; % 720 = 0 读作:&lt;expr&gt;720 的倍数。

【讨论】:

  • Modulo artithmetics 是我所需要的,正如您所提到的,您的回答解决了我的问题。谢谢!
猜你喜欢
  • 2014-04-04
  • 2010-09-20
  • 2020-04-11
  • 2018-10-04
  • 1970-01-01
  • 2011-11-09
  • 1970-01-01
  • 2020-06-21
  • 2010-09-20
相关资源
最近更新 更多