Я мог бы сослаться на INTERVAL '1 day'
как интервал литерал . Это означает, что, как написано, так и без приведения, в нем указывается буквальное значение Postgres INTERVAL
. С другой стороны, '1 day'::INTERVAL
на самом деле является приведением текста 1 day
, чтобы сделать его значением INTERVAL
.
Синтаксис приведения ::
не является частьюСтандарт ANSI и специфичен для Postgres. Обратите внимание, что CAST('1 day' AS INTERVAL)
более или менее идентичен использованию синтаксиса с двойным двоеточием '1 day'::INTERVAL
.
Если вас беспокоит необходимость в один прекрасный день перенести ваш код Postgres SQL в другую базу данных, то вы можете придерживатьсяиспользование CAST()
над ::
, первое, которое поддерживается большинством других баз данных.
С точки зрения производительности INTERVAL '1 day'
не требует от Postgres выполнения каких-либо явных операций приведения, тогда как CAST
или ::
требуют явного приведения. Там могут быть небольшие различия в производительности.