oracle 将NVARCHAR列作为SQLDeveloper的日期时间

klh5stk1  于 2023-11-17  发布在  Oracle
关注(0)|答案(1)|浏览(121)

我有一个名为TIMEVALUE的列的表,它是一个nvarchar 2类型的列。的格式就像例子:'29-OCT-23 05.30.03.94200000 PM',我需要检索数据为'29-10-23 05.30.03',并能够与它作为日期。to_timestamp或to_datetime在这种情况下工作。
有什么建议吗?
我希望从列中检索数据作为datetime

shstlldc

shstlldc1#

我有一个表,其中有一个名为TIMEVALUE的列,它是一个nvarchar2类型的列。格式就像例子:29-OCT-23 05.30.03.942000000 PM,我需要检索数据[...],并能够使用它作为日期。
使用TO_TIMESTAMP,然后CASTDATE

SELECT CAST(
         TO_TIMESTAMP(
           timevalue,
           'DD-MON-RR HH12.MI.SS.FF AM',
           'NLS_DATE_LANGUAGE=English'
         )
         AS DATE
       )
FROM   table_name;

字符串
我需要检索数据为'29-10-23 05.30.03'
在Oracle中,DATE是一种二进制数据类型,由7个字节组成,代表世纪、世纪年、月、日、小时、分钟和秒。如果ALWAYS具有这7个组件,则它Never以任何特定的人类可读格式存储。
因此,如果您想要一个DATE,那么您想要一个没有格式的二进制值(并且您可以更改客户端应用程序上的首选项以确定客户端应用程序如何格式化日期-在SQL Developer中,您将使用ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MM-RR HH24.MI.SS';或使用首选项菜单)
如果你想要一个特定的格式,不管客户端如何格式化日期,那么你需要一个格式化的字符串(而不是日期):

SELECT TO_CHAR(
         TO_TIMESTAMP(
           timevalue,
           'DD-MON-RR HH12.MI.SS.FF AM',
           'NLS_DATE_LANGUAGE=English'
         ),
         'DD-MM-RR HH24.MI.SS'
       )
FROM   table_name;

  • 注意:如果你想要24小时制的小时数,那么它将是29-10-23 17.30.03

相关问题