使用 to_date 作为强制转换函数的列

Hen*_*e20 4 sql oracle

我想用 Oracle 数据库实现以下功能。

当前的

table FTE
f_date    f_stime   f_eDate   f_etime  
20191125   14:00   20191125   14:01
Run Code Online (Sandbox Code Playgroud)

期望:

table FTE
f_date    f_stime   f_eDate   f_etime   f_Sdatetime        f_Edatetime
20191125   14:00   20191125   14:01      2019/11/25 14:00  2019/11/25 14:01
Run Code Online (Sandbox Code Playgroud)

日期格式是一个需要转换为日期的数字。我用这个to_date功能实现了这一点。

时间格式也是一个数字。

我可以使用哪个功能来实现这一点?

Tim*_*sen 5

这是一种方法,TO_DATE与字符串连接一起使用:

SELECT
    f_date,
    f_stime,
    f_eDate,
    f_etime,
    TO_DATE(f_date || f_stime, 'YYYYMMDDHH24:MI') AS f_Sdatetime,
    TO_DATE(f_eDate || f_etime, 'YYYYMMDDHH24:MI') AS f_Edatetime
FROM FTE;
Run Code Online (Sandbox Code Playgroud)

演示

这假设您只想使用日期和时间组件形成日期时间。如果您还想以您向我们展示的确切格式查看这些日期时间,那么您必须TO_CHAR使用适当的掩码进行额外调用:

SELECT
    f_date,
    f_stime,
    f_eDate,
    f_etime,
    TO_CHAR(TO_DATE(f_date || f_stime, 'YYYYMMDDHH24:MI'), 'YYYY/MM/DD HH24:MI') AS f_Sdatetime,
    TO_CHAR(TO_DATE(f_eDate || f_etime, 'YYYYMMDDHH24:MI'), 'YYYY/MM/DD HH24:MI') AS f_Edatetime
FROM FTE;
Run Code Online (Sandbox Code Playgroud)

第二个查询的屏幕截图

演示

请注意,这里最好的解决方案可能是不要单独存储日期和时间组件,这将避免我们现在正在做的 SQL 杂技。只需使用单个日期时间/时间戳列。