a.m 或 p.m。录音时的时间格式
a.m or p.m. time format when recording record
晚上好,
我需要在 table 中记录日期和时间,但格式为 (a.m. or p.m),
看到a和m中间有一个点
我正在尝试:
insert into fechadia (fecha,id )VALUES (to_date('14/05/2021 10:01:45 a.m.','DD/MM/YYYY hh:mi:ss a.m.'),'4')
ALTER SESSION SET NLS_DATE_FORMAT='DD/MM/YYYY HH:MI:SS a.m.';
我得到了错误:
ORA-01855: 上午 / a.m。或下午/p.m。必要的
如果我删除了点,但它会将记录保存为 AM,而不是 a.m。
insert into fechadia (fecha,id )VALUES (to_date('14/05/2021 10:01:45 am','DD/MM/YYYY hh:mi:ss a.m.'),'4')
结果:
2021 年 5 月 14 日 10:01:45 上午
期望值:
2021 年 5 月 14 日 10:01:45 a.m。
这个带点的值很重要,因为到达的值是(a.m.)
我将不胜感激任何帮助。
*** 附加信息:
la columna tiene el tipo de datos DATE
谢谢,
首先,日期不存储为格式化字符串,带有“a.m”。或“上午”。这些过滤器仅在数据 处理 时应用,以转换为二进制日期数据类型或从二进制日期数据类型转换。此外,由于您在 to_date
函数调用中使用了显式格式过滤器,因此 NLS_DATE_FORMAT
的值无关紧要。
您收到的错误表明您的格式字符串有问题:传入数据的某些内容未正确匹配,但我无法重现它。有些行有可能有不同的格式吗?如果你不能让过滤器以任何其他方式工作,你可以通过删除所有的点来修改文本,因为它被插入到有效的东西中:
-- remove dots from a.m. or p.m.
insert into fechadia (fecha,id) VALUES (to_date(replace('14/05/2021 10:01:45 a.m.','.'),'DD/MM/YYYY hh:mi:ss am'),'4');
重点是插入数据。一旦它在 table 中,那么当您 select 您的数据(即“a.m”)时只需使用适当的过滤器,您应该不会有任何问题:
-- select a date data type and format with a.m.
select to_char(sysdate,'DD/MM/YYYY hh:mi:ss a.m.') from dual;
TO_CHAR(SYSDATE,'DD/MM/YYYYHH:MI:SSA.M.')
-----------------------------------------
07/07/2021 03:50:24 a.m.
-- convert a string with "pm" to a data data type and back to a formatted string with "p.m."
select to_char(to_date('07/07/2021 10:10:10 pm','DD/MM/YYYY hh:mi:ss am'),'DD/MM/YYYY hh:mi:ss a.m.') from dual;
TO_CHAR(TO_DATE('07/07/202110:10:10PM','DD/MM/YYYYHH:MI:SSAM'),'DD/MM/YYYYHH:MI:SSA.M.')
----------------------------------------------------------------------------------------
07/07/2021 10:10:10 p.m.
晚上好,
我需要在 table 中记录日期和时间,但格式为 (a.m. or p.m),
看到a和m中间有一个点
我正在尝试:
insert into fechadia (fecha,id )VALUES (to_date('14/05/2021 10:01:45 a.m.','DD/MM/YYYY hh:mi:ss a.m.'),'4')
ALTER SESSION SET NLS_DATE_FORMAT='DD/MM/YYYY HH:MI:SS a.m.';
我得到了错误: ORA-01855: 上午 / a.m。或下午/p.m。必要的
如果我删除了点,但它会将记录保存为 AM,而不是 a.m。
insert into fechadia (fecha,id )VALUES (to_date('14/05/2021 10:01:45 am','DD/MM/YYYY hh:mi:ss a.m.'),'4')
结果: 2021 年 5 月 14 日 10:01:45 上午
期望值: 2021 年 5 月 14 日 10:01:45 a.m。
这个带点的值很重要,因为到达的值是(a.m.) 我将不胜感激任何帮助。
*** 附加信息: la columna tiene el tipo de datos DATE
谢谢,
首先,日期不存储为格式化字符串,带有“a.m”。或“上午”。这些过滤器仅在数据 处理 时应用,以转换为二进制日期数据类型或从二进制日期数据类型转换。此外,由于您在 to_date
函数调用中使用了显式格式过滤器,因此 NLS_DATE_FORMAT
的值无关紧要。
您收到的错误表明您的格式字符串有问题:传入数据的某些内容未正确匹配,但我无法重现它。有些行有可能有不同的格式吗?如果你不能让过滤器以任何其他方式工作,你可以通过删除所有的点来修改文本,因为它被插入到有效的东西中:
-- remove dots from a.m. or p.m.
insert into fechadia (fecha,id) VALUES (to_date(replace('14/05/2021 10:01:45 a.m.','.'),'DD/MM/YYYY hh:mi:ss am'),'4');
重点是插入数据。一旦它在 table 中,那么当您 select 您的数据(即“a.m”)时只需使用适当的过滤器,您应该不会有任何问题:
-- select a date data type and format with a.m.
select to_char(sysdate,'DD/MM/YYYY hh:mi:ss a.m.') from dual;
TO_CHAR(SYSDATE,'DD/MM/YYYYHH:MI:SSA.M.')
-----------------------------------------
07/07/2021 03:50:24 a.m.
-- convert a string with "pm" to a data data type and back to a formatted string with "p.m."
select to_char(to_date('07/07/2021 10:10:10 pm','DD/MM/YYYY hh:mi:ss am'),'DD/MM/YYYY hh:mi:ss a.m.') from dual;
TO_CHAR(TO_DATE('07/07/202110:10:10PM','DD/MM/YYYYHH:MI:SSAM'),'DD/MM/YYYYHH:MI:SSA.M.')
----------------------------------------------------------------------------------------
07/07/2021 10:10:10 p.m.