我有一个上述格式的字符串。 需要为Oracle形成一个选择查询,以DD / MON / YYYY HH24显示日期:MI:SS
答案 0 :(得分:2)
这将把它作为日期:
SELECT TO_DATE(
'Thu Mar 16 11:30:13 IST 2017',
'DY MON DD HH24:MI:SS "IST" YYYY'
)
FROM DUAL;
这将以您想要的格式对其进行格式化:
SELECT TO_CHAR(
TO_DATE(
'Thu Mar 16 11:30:13 IST 2017',
'DY MON DD HH24:MI:SS "IST" YYYY'
),
'DD/MON/YYYY HH24:MI:SS'
)
FROM DUAL;
答案 1 :(得分:0)
您需要时区IST吗?问题是,这是不明确的:
SELECT tzName, tzabbrev, TZ_OFFSET(tzName)
FROM v$timezone_names
WHERE tzabbrev = 'IST';
TZNAME TZABBREV TZ_OFFSET(TZNAME)
Asia/Calcutta IST +05:30
Asia/Colombo IST +05:30
Asia/Dacca IST +06:00
Asia/Dhaka IST +06:00
Asia/Gaza IST +02:00
Asia/Hebron IST +02:00
Asia/Jerusalem IST +02:00
Asia/Karachi IST +05:00
Asia/Kathmandu IST +05:45
Asia/Katmandu IST +05:45
Asia/Kolkata IST +05:30
Asia/Tel_Aviv IST +02:00
Asia/Thimbu IST +06:00
Asia/Thimphu IST +06:00
Atlantic/Reykjavik IST +00:00
Eire IST +00:00
Europe/Dublin IST +00:00
Iceland IST +00:00
Israel IST +02:00
假设它始终是本地时间和时区值可以忽略。在这种情况下,你可以使用这个:
TO_DATE(
REGEXP_REPLACE(
'Thu Mar 16 11:30:13 IST 2017',
'\w+ +(\w+) +(\d+) +(\d{2}:\d{2}:\d{2}).+(\d{4})',
'\1 \2 \3 \4'),
'Mon dd hh24:mi:ss yyyy', 'NLS_DATE_LANGUAGE = american')
结果将根据您当前的NLS_DATE_FORMAT
设置。可以通过
ALTER SESSION SET NLS_DATE_FORMAT = 'DD/MON/YYYY HH24:MI:SS'
或上面的表达式
TO_CHAR(TO_DATE(...), 'DD/MON/YYYY HH24:MI:SS')