SQL Server 将 date_time 列和 smallint 列组合在一起,以 12 小时格式派生日期时间列



我有一个date_time列和hour_ending列,如下所示。如何将它们连接在一起以派生 12 小时日期格式的date_time列。我的要求是使用 date_time 作为连接键将表 A 与表 B 连接起来

表 A

DATE                HOUR_ENDING
---             ----------
8/31/2016 12:00:00.000 AM   1
8/31/2016 12:00:00.000 AM   2
8/31/2016 12:00:00.000 AM   3
8/31/2016 12:00:00.000 AM   4
8/31/2016 12:00:00.000 AM   5
8/31/2016 12:00:00.000 AM   6
8/31/2016 12:00:00.000 AM   7
8/31/2016 12:00:00.000 AM   8
8/31/2016 12:00:00.000 AM   9
8/31/2016 12:00:00.000 AM   10
8/31/2016 12:00:00.000 AM   11
8/31/2016 12:00:00.000 AM   12
8/31/2016 12:00:00.000 AM   13
8/31/2016 12:00:00.000 AM   14
8/31/2016 12:00:00.000 AM   15
8/31/2016 12:00:00.000 AM   16
8/31/2016 12:00:00.000 AM   17
8/31/2016 12:00:00.000 AM   18
8/31/2016 12:00:00.000 AM   19
8/31/2016 12:00:00.000 AM   20
8/31/2016 12:00:00.000 AM   21
8/31/2016 12:00:00.000 AM   22
8/31/2016 12:00:00.000 AM   23
8/31/2016 12:00:00.000 AM   24

B(我需要表 A 是这样的(

8/31/2013 12:00:00 AM
8/31/2013 1:00:00 AM
8/31/2013 2:00:00 AM
8/31/2013 3:00:00 AM
8/31/2013 4:00:00 AM
8/31/2013 5:00:00 AM
8/31/2013 6:00:00 AM
8/31/2013 7:00:00 AM
8/31/2013 8:00:00 AM
8/31/2013 9:00:00 AM
8/31/2013 10:00:00 AM
8/31/2013 11:00:00 AM
8/31/2013 12:00:00 PM
8/31/2013 1:00:00 PM
8/31/2013 2:00:00 PM
8/31/2013 3:00:00 PM
8/31/2013 4:00:00 PM
8/31/2013 5:00:00 PM
8/31/2013 6:00:00 PM
8/31/2013 7:00:00 PM
8/31/2013 8:00:00 PM
8/31/2013 9:00:00 PM
8/31/2013 10:00:00 PM
8/31/2013 11:00:00 PM
9/1/2013 12:00:00 AM

您可以使用DATEADD()来调整 A 表中的日期,以使用小时偏移量。 然后,使用此调整后的时间戳将表 A 连接到 B。

SELECT *
FROM tableA a
INNER JOIN tableB b
ON DATEADD(HOUR, a.HOUR_ENDING, a.DATE) = b.DATE

顺便说一下,您应该考虑更改表的设计,以便将日期和时间一起存储在一列中。

最新更新