#postgresql #datetime #rfc3339
#postgresql #дата и время #rfc3339
Вопрос:
В документации для ввода даты / времени в Postgres говорится:
ISO 8601 определяет использование заглавной буквы T для разделения даты и времени. PostgreSQL принимает этот формат при вводе, но при выводе он использует пробел, а не T, как показано выше. Это для удобства чтения и согласованности с RFC 3339, а также с некоторыми другими системами баз данных.
Однако я не могу найти эту часть в RFC3339. Кто-нибудь может мне помочь?
Комментарии:
1. Примечание в разделе 5.6… (Найдите в документе «пробел».)
Ответ №1:
date-time = full-date "T" full-time
NOTE: Per [ABNF] and ISO8601, the "T" and "Z" characters in this
syntax may alternatively be lower case "t" or "z" respectively.
This date/time format may be used in some environments or contexts
that distinguish between the upper- and lower-case letters 'A'-'Z'
and 'a'-'z' (e.g. XML). Specifications that use this format in
such environments MAY further limit the date/time syntax so that
the letters 'T' and 'Z' used in the date/time syntax must always
be upper case. Applications that generate this format SHOULD use
upper case letters.
NOTE: ISO 8601 defines date and time separated by "T".
Applications using this syntax may choose, for the sake of
readability, to specify a full-date and full-time separated by
(say) a space character.
Комментарии:
1. Хммм — похоже, это говорит о том, что можно использовать пробел, а не, как, по-видимому, предполагает документация PostgreSQL, требуется для совместимости с RFC.
2. @LaurenzAlbe: в ISO вы можете опустить «T», но не в RFC. RFC выбирает более простой синтаксис (подмножество ISO), чтобы упростить задачу и уменьшить количество ошибок в программном обеспечении (об особых случаях)
3. @GiacomoCatenazzi Тогда на самом деле все наоборот, и PostgreSQL нарушает RFC? Я так не думаю, см. Примечание.
4. Примечание: RFC3999 не является стандартом в отношении времени даты (и приложения имеют, но предложение о том, как должен работать новый стандарт, чтобы избежать путаницы. PostgreSQL просто использует ISO. В приложении A содержится дополнительная информация о различиях.