gpt4 book ai didi

sql - 选择具有时间格式的所有列

转载 作者:行者123 更新时间:2023-12-04 21:15:18 24 4
gpt4 key购买 nike

我有很多列,其中一些包含时间戳。我想获取所有列记录,但要格式化日期/时间的记录:

我知道我可以单独获取所有列,但有 20 列,所以我想避免这样做:

select 
id,
-- ... 19 other columns,
TO_CHAR(porh_received, 'YYYY-MM-DD HH24:MI:SS')
from pick_order_hist;

我期待这样的事情:

select *, TO_CHAR(porh_received, 'YYYY-MM-DD HH24:MI:SS') from pick_order_hist;

但它不起作用。

最佳答案

选项 1

一种解决方案是将 session 的 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;

这种方法的缺点是,这会改变 session 生命周期的默认格式(或者直到后来更改为其他格式)。根据您的用例,这可能是您需要的,也可能不是。

选项 2

否则,您可以使用 * 获取所有列,然后在结果集中使用列别名添加格式化的时间戳列。因此,无需列出所有列,您只需列出时间戳列。缺点是您会在结果集中获得一些额外的列,每个列对应一个未格式化的时间戳;您可以在您的应用程序中简单地忽略它们。

SELECT
t.*,
TO_CHAR(porh_received, 'YYYY-MM-DD HH24:MI:SS') porh_received_with_format
FROM pick_order_hist t;

关于sql - 选择具有时间格式的所有列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58042413/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com