我想通过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
函数实现的。
时间格式也是数字。
我可以使用哪个功能来实现这一目标?
答案 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;
这假设您只想使用日期和时间组成一个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;
请注意,这里的 best 解决方案可能是不分别存储日期和时间部分,这可以避免我们现在正在执行的SQL杂技。只需使用单个datetime / timestamp列即可。