将日期 (smalldatetime) 和小时 (tinyint) 列转换为 SQL 中的日期时间
Convert date ( smalldatetime) and hour (tinyint) column into datetime in SQL
我在 SQL 服务器数据库的一个 table 中有两列(日期列是 smalldatetime 和小时列是 smallint),如下所示
ScenarioId ZoneId Date Hour DemandMW Hour
618011031 71400 2018-01-01 00:00:00 1 2490.6 2018-01-02 00:00:00
618011031 71400 2018-01-01 00:00:00 2 2405.8 2018-01-03 00:00:00
618011031 71400 2018-01-01 00:00:00 3 2364 2018-01-04 00:00:00
...
618011031 71400 2018-01-01 00:00:00 4 2358 2018-01-05 00:00:00
我想创建另一个日期时间列,将两者组合为:
ScenarioId ZoneId Date Hour DemandMW Hour DateTime
618011031 71400 2018-01-01 00:00:00 1 2490.6 2018-01-02 00:00:00 2018-01-02 01:00:00
618011031 71400 2018-01-01 00:00:00 2 2405.8 2018-01-03 00:00:00 2018-01-02 02:00:00
618011031 71400 2018-01-01 00:00:00 3 2364 2018-01-04 00:00:00 2018-01-02 03:00:00
...
618011031 71400 2018-01-01 00:00:00 24 2358 2018-01-05 00:00:00 2018-01-02 24:00:00
如何编写 select 查询。请指教
你试过了吗dateadd()
?
select dateadd(hour, [hour], [date]) as [datetime]
如果您希望将其作为 table 的一部分,则添加一个计算列:
alter table t add [datetime] as (dateadd(hour, [hour], [date]));
注意:date
、datetime
和 hour
是非常糟糕的列名称,因为这些都是 SQL 服务器关键字。
我在 SQL 服务器数据库的一个 table 中有两列(日期列是 smalldatetime 和小时列是 smallint),如下所示
ScenarioId ZoneId Date Hour DemandMW Hour
618011031 71400 2018-01-01 00:00:00 1 2490.6 2018-01-02 00:00:00
618011031 71400 2018-01-01 00:00:00 2 2405.8 2018-01-03 00:00:00
618011031 71400 2018-01-01 00:00:00 3 2364 2018-01-04 00:00:00
...
618011031 71400 2018-01-01 00:00:00 4 2358 2018-01-05 00:00:00
我想创建另一个日期时间列,将两者组合为:
ScenarioId ZoneId Date Hour DemandMW Hour DateTime
618011031 71400 2018-01-01 00:00:00 1 2490.6 2018-01-02 00:00:00 2018-01-02 01:00:00
618011031 71400 2018-01-01 00:00:00 2 2405.8 2018-01-03 00:00:00 2018-01-02 02:00:00
618011031 71400 2018-01-01 00:00:00 3 2364 2018-01-04 00:00:00 2018-01-02 03:00:00
...
618011031 71400 2018-01-01 00:00:00 24 2358 2018-01-05 00:00:00 2018-01-02 24:00:00
如何编写 select 查询。请指教
你试过了吗dateadd()
?
select dateadd(hour, [hour], [date]) as [datetime]
如果您希望将其作为 table 的一部分,则添加一个计算列:
alter table t add [datetime] as (dateadd(hour, [hour], [date]));
注意:date
、datetime
和 hour
是非常糟糕的列名称,因为这些都是 SQL 服务器关键字。