结合日期和时间很慢,如何使其高效?

Combine date and time is very slow, how to make it efficient?

这是我的代码

concat(CONVERT(varchar(10), cast(cast(cast(DATE1 as int) as char(8)) as date), 101),

上面的部分是创建日期格式,然后在下面连接:

', ',
convert(varchar(5), (convert(time, left(RIGHT('000000' + CONVERT(varchar(6), TIME1), 6), 2)
+ ':' + substring(RIGHT('000000' + CONVERT(varchar(6), TIME1), 6), 3, 2)
+ ':' + substring(RIGHT('000000' + CONVERT(varchar(6), TIME1), 6), 5, 2))), 108))

这returns次。

将两者组合在同一行输出中作为 mm/dd/yyy、13:00

我正在转换原始字段,其中日期写为 yyyymmdd,时间写为 5-6 位数字,71200(7:12,但秒数始终为 00)。

这需要很长时间,所以我想要一种使代码更高效的方法。

请注意,我将日期与 4 个不同的时间列连接起来,所以也许这就是它花费很长时间的原因?

尝试使用 DATEADD 而不是字符串操作:

DATEADD(MINUTE, TIME1%10000/100, 
  DATEADD(HOUR,TIME1/10000, 
    CAST(CAST(CAST(DATE1 as int) AS char(8)) AS datetime))

TIME1 / 10000 should give you the number of hours.  71200 -> 7 
TIME1 % 10000 should give you the number of minutes * 100. 71200 -> 1200 
TIME1 % 10000 / 100 will give you the number of minutes.  71200 -> 12

如果您经常查询此数据(比 inserting/updating 它更频繁),或者您更关心查询性能而不是 updating/insert 性能,那么您应该考虑制作一个持久化计算列在此 table 上,这样您就不必在查询时进行这些计算。然后,您还可以为该列编制索引,如果您定期根据日期时间进行过滤,这将非常有帮助。