我有很多列,其中一些包含时间戳。我想获取所有列记录,但要格式化日期/时间的记录:
我知道我可以分别获取所有列,但是有20列,所以我想避免这样做:
firebase.auth()
我希望这样:
select
id,
-- ... 19 other columns,
TO_CHAR(porh_received, 'YYYY-MM-DD HH24:MI:SS')
from pick_order_hist;
但它不起作用。
答案 0 :(得分:5)
选项1
一种解决方案是将会话的NLS设置更改为目标时间戳格式,该设置控制返回时间戳的默认格式。根据您的实际数据类型,可能是以下三种之一:
alter session set nls_timestamp_format = 'YYYY-MM-DD HH24:MI:SS';
alter session set nls_timestamp_tz_format = 'YYYY-MM-DD HH24:MI:SS';
alter session set nls_date_format = 'YYYY-MM-DD HH24:MI:SS';
然后,您可以简单地执行以下操作:
SELECT * FROM pick_order_hist;
此方法的缺点是,它将更改会话生命周期中的默认格式(或以后再更改为其他格式)。根据您的用例,可能需要,也可能不需要。
选项2
否则,您可以使用*
获取所有列,然后使用结果集中的列别名添加格式化的时间戳列。因此,您无需列出所有列,而只需要列出时间戳记列。不利的一面是,您在结果集中增加了几列,每个未格式化的时间戳对应一列;您只需在应用程序中忽略它们即可。
SELECT
t.*,
TO_CHAR(porh_received, 'YYYY-MM-DD HH24:MI:SS') porh_received_with_format
FROM pick_order_hist t;