使用to_date作为强制转换功能

时间:2019-12-06 13:34:46

标签: sql oracle

我想通过Oracle数据库实现以下目标。

当前

table FTE
f_date    f_stime   f_eDate   f_etime  
20191125   14:00   20191125   14:01

所需:

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

日期格式是需要转换为日期的数字。我是通过to_date函数实现的。

时间格式也是数字。

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

1 个答案:

答案 0 :(得分: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;

Demo

这假设您只想使用日期和时间组成一个datetime。如果您还想以您显示给我们的确切格式查看这些日期时间,则您必须使用适当的掩码另外拨打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;

screen capture of second query

Demo

请注意,这里的 best 解决方案可能是不分别存储日期和时间部分,这可以避免我们现在正在执行的SQL杂技。只需使用单个datetime / timestamp列即可。