sql - Oracle:日期格式
问题描述
我正在尝试连接日期和时间,VARCHAR2
然后将其传递给DATE
. 问题是,当我将它传递给它时,DATE
它不会在格式上打印日期时间date
。我究竟做错了什么?
o_data_final DATE;
i_data VARCHAR2:= '12/06/2000';
i_hora VARCHAR2:= '12:23:00';
dbms_output.put_line('print:'||concat(concat(i_data,' '),i_hora));
--prints correctly: 12/06/2000 12:23:00
SELECT to_date(concat(concat(i_data,' '),i_hora), 'dd/mm/yyyy hh24:mi:ss')
INTO o_data_final
FROM dual;
dbms_output.put_line('data:'||to_char(o_data_final));
--prints wrong: 00.06.12
我希望 o_data_final 是 12/06/2000 12:23:00。谢谢。
解决方案
然后您需要将格式传递给 TO_CHAR 函数,例如:
dbms_output.put_line('data:'||to_char(o_data_final, 'dd/mm/yyyy hh:mi:ss'));
Oracle 以内部二进制格式存储日期,它没有特定的人类可读格式。您将需要使用格式TO_CHAR
或设置会话的默认格式NLS_DATE_FORMAT
。
alter session set NLS_DATE_FORMAT = 'dd/mm/yyyy hh:mi:ss';
目前,您正在获得输出:00.06.12
目前您NLS_DATE_FORMAT
的设置为yy.mm.dd
NLS_DATE_FORMAT
您可以使用以下查询获取当前会话值:
SELECT
*
FROM
NLS_SESSION_PARAMETERS
WHERE
PARAMETER = 'NLS_DATE_FORMAT';
干杯!!
推荐阅读
- symfony5 - symfony 5 nelmio api 文档不返回
- java - 使用 getactivity() 或 getcontext() 从片段到适配器时获取空对象引用
- c# - 参数“动画师”不存在
- python - 熊猫数据框空间/内存大小问题
- android - 我坚持使用 Firebase 身份验证
- python - Postgresql 数据库错误:列不存在
- sql - WITH 子句可以在不使用 Select 语句的情况下具有硬编码值吗?
- python - MITRE ATT&CK ICS:如何从 TAXII 服务器获取所有资产?
- rust - Rust 中有类似 nodemon 的东西吗?
- android - @react-native-firebase/messaging 错误:找不到符号 FirebaseInstanceId