2016-11-28 6 views
0

Мне нужно преобразовать дату SYSDATE в определенный формат даты. Этот формат должен быть примерно таким: '2016-11-23T15:12:48Z'. Я думаю, что это странный формат даты, но это те требования, которые у меня есть.Формат даты часового пояса в Oracle

Это должна быть дата отправки сообщения веб-службы.

В Oracle (12c или 11g) У меня есть функция преобразования даты в этом конкретном формате? Благодарю.

+1

[to_char()] (https://docs.oracle.com/database/121/SQLRF/functions216.htm#SQLRF06129) - это не «странный» формат. Это формат ISO, который включает часовой пояс –

+1

Если я правильно помню, это стандарт ISO-8601, но, ну, некоторые люди даже жалуются на метрическую систему :) –

ответ

3

Это даст вам ISO-8601, упомянутые в комментарии:

select to_char(systimestamp,'YYYY-MM-DD"T"hh24:mi:sstzh:tzm') isodt from dual; 

Если вы действительно хотите Z вместо часового пояса вы можете использовать:

select to_char(cast(systimestamp as timestamp) at time zone 'UTC', 
       'yyyy-mm-dd"T"hh24:mi:ss"Z"') 
    from dual; 
+0

Спасибо. Это оно!!! – milheiros

+0

Сценарий 'Z' на ISO-8601 указывает, что временная метка находится в часовом поясе UTC (время Zulu). Если 'SYSDATE' не UTC, тогда его нужно будет преобразовать в правильный часовой пояс. – MT0

+0

@ MT0 спасибо. Я этого не знал. Я добавил, чтобы добавить к UTC, чтобы исправить это. – Kacper