在 ETL SQL 查询中组合日期和时间字段
Combining date and time fields in ETL SQL Query
我有多个日期和时间字段,我需要在 SQL 查询中将它们组合成一个日期时间。不幸的是,我无法更改初始数据库结构以将它们合并到原始服务器中。
导出后可以合并SQL查询数据,但是因为平面文件转换的问题,还有数据corruption/loss的可能性,我很犹豫,因为我需要转换平面文件两次。
这些是我尝试过的东西:
SELECT Combine = cast([DateValue] as datetime) + Cast([TimeValue] as datetime)
不幸的是,这会导致我的列少于原始字段的错误....
原始查询如下所示:
SELECT
Ordered_Date.DateValue,
Ordered_TOD.TimeValue,
Start_Date.DateValue,
Start_TOD.TimeValue,
End_Date.DateValue,
End_TOD.TimeValue,
Discontinued_Date.DateValue,
Discontinued_TOD.TimeValue
FROM
warehouse_report...........
WHERE
( ..... )
如果我将 Combine 命令添加到 SQL 查询中,它似乎可以工作,因为它正在组合 date/time。问题是,当我在 SQL 查询的 SELECT 部分实现它时,我少了 1 个列,它不会让我执行脚本...
SELECT
Ordered_Date.DateValue,
Ordered_TOD.TimeValue,
Start_Date.DateValue,
Start_TOD.TimeValue,
COMBINE = CAST(End_Date.DateValue as datetime) + CAST(End_TOD.TimeValue as datetime),
Discontinued_Date.DateValue,
Discontinued_TOD.TimeValue
FROM
warehouse_report...........
WHERE
( ..... )
这让我在 SQL 查询的输出中少了一列...
如何连接值并解析:
SELECT cast([DateValue]||' '||[TimeValue] as datetime)
请提供有关您使用的 SGBD 的信息以获得更好的答案。
编辑 1:
至SQL服务器:
Select
x.d1
From (
Select
convert(datetime, '2018-01-01 00:00:00.0', 121) d1
) x
Union All
Select
convert(datetime,
substring(convert(varchar, x.d1, 121), 1, 11)
+ substring(convert(varchar, x.t1, 121), 11, 13)
, 121)
From (
Select
convert(datetime, '2018-01-01 00:00:00.0', 121) d1,
convert(datetime, '10:00:22') t1
) x
我有多个日期和时间字段,我需要在 SQL 查询中将它们组合成一个日期时间。不幸的是,我无法更改初始数据库结构以将它们合并到原始服务器中。
导出后可以合并SQL查询数据,但是因为平面文件转换的问题,还有数据corruption/loss的可能性,我很犹豫,因为我需要转换平面文件两次。
这些是我尝试过的东西:
SELECT Combine = cast([DateValue] as datetime) + Cast([TimeValue] as datetime)
不幸的是,这会导致我的列少于原始字段的错误....
原始查询如下所示:
SELECT
Ordered_Date.DateValue,
Ordered_TOD.TimeValue,
Start_Date.DateValue,
Start_TOD.TimeValue,
End_Date.DateValue,
End_TOD.TimeValue,
Discontinued_Date.DateValue,
Discontinued_TOD.TimeValue
FROM
warehouse_report...........
WHERE
( ..... )
如果我将 Combine 命令添加到 SQL 查询中,它似乎可以工作,因为它正在组合 date/time。问题是,当我在 SQL 查询的 SELECT 部分实现它时,我少了 1 个列,它不会让我执行脚本...
SELECT
Ordered_Date.DateValue,
Ordered_TOD.TimeValue,
Start_Date.DateValue,
Start_TOD.TimeValue,
COMBINE = CAST(End_Date.DateValue as datetime) + CAST(End_TOD.TimeValue as datetime),
Discontinued_Date.DateValue,
Discontinued_TOD.TimeValue
FROM
warehouse_report...........
WHERE
( ..... )
这让我在 SQL 查询的输出中少了一列...
如何连接值并解析:
SELECT cast([DateValue]||' '||[TimeValue] as datetime)
请提供有关您使用的 SGBD 的信息以获得更好的答案。
编辑 1:
至SQL服务器:
Select
x.d1
From (
Select
convert(datetime, '2018-01-01 00:00:00.0', 121) d1
) x
Union All
Select
convert(datetime,
substring(convert(varchar, x.d1, 121), 1, 11)
+ substring(convert(varchar, x.t1, 121), 11, 13)
, 121)
From (
Select
convert(datetime, '2018-01-01 00:00:00.0', 121) d1,
convert(datetime, '10:00:22') t1
) x