Является ли использование T для разделения даты и времени несовместимым с RFC3339?

#postgresql #datetime #rfc3339

#postgresql #дата и время #rfc3339

Вопрос:

В документации для ввода даты / времени в Postgres говорится:

ISO 8601 определяет использование заглавной буквы T для разделения даты и времени. PostgreSQL принимает этот формат при вводе, но при выводе он использует пробел, а не T, как показано выше. Это для удобства чтения и согласованности с RFC 3339, а также с некоторыми другими системами баз данных.

Однако я не могу найти эту часть в RFC3339. Кто-нибудь может мне помочь?

Комментарии:

1. Примечание в разделе 5.6… (Найдите в документе «пробел».)

Ответ №1:

Раздел 5.6

 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 содержится дополнительная информация о различиях.