在 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