Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 生成一系列日期-使用日期类型作为输入_Postgresql_Types_Timestamp_Postgresql 9.1_Generate Series - Fatal编程技术网

Postgresql 生成一系列日期-使用日期类型作为输入

Postgresql 生成一系列日期-使用日期类型作为输入,postgresql,types,timestamp,postgresql-9.1,generate-series,Postgresql,Types,Timestamp,Postgresql 9.1,Generate Series,对于generate_series来说,参数可以是int或者bigint对于generate_series(start,stop)和generate_series(start,stop,step)案例和timestamp或者带有时区的timestamp对于generate_series(start,stop,step interval) 是什么原因导致generate_series也使用date类型作为输入,并返回带时区的时间戳 pg=# select generate_series('2014

对于
generate_series
来说,参数可以是
int
或者
bigint
对于
generate_series(start,stop)
generate_series(start,stop,step)
案例和
timestamp
或者
带有时区的timestamp
对于
generate_series(start,stop,step interval)

是什么原因导致
generate_series
也使用
date
类型作为输入,并返回带时区的
时间戳

pg=# select generate_series('2014-01-01'::date,'2014-01-02'::date,'1 day');
    generate_series     
------------------------
 2014-01-01 00:00:00+01
 2014-01-02 00:00:00+01
(2 rows)
由于,我们还可以将
date
值传递给,因为存在从
date
timestamp
的隐式转换,以及从
date
timestamp
的隐式转换。可能不明确,但在“日期/时间类型”中,
timestamtz
首选的“。详细说明:

对于裸露的
日期
演员阵容中假定当地时间
00:00
。请注意,如果使用
date
作为输入,当前时区设置会直接影响结果,因为显然,“2014-01-10 00:00”在东京代表的时间点与在纽约不同

博士后如何决定哪些类型是可以接受的? 博士后主要区别于:

显式强制转换
。。使用
CAST
语法时。
作业类型转换
。。将值指定给目标列时的隐式强制转换。
隐式强制转换
。。所有其他表达式中的隐式强制转换

必须在系统中注册一个从输入类型到预期类型的隐式转换,才能使函数静默地接受(并转换)输入值

要查看哪些强制转换定义为
timestamptz
,可以查询目录表:

所有这些类型转换都是隐式的。根据castcontext上的文档:

指示可以在哪些上下文中调用强制转换<代码>e
表示仅作为 显式强制转换(使用
cast
::
语法)<代码>a在 分配给目标列,以及显式分配
i
表示 在表达式以及其他情况下隐式使用。


粗体强调我的解释。

请注意,我最初的解释有错误。已经有几年了,但是你可能仍然对更新感兴趣。
SELECT castsource::regtype, casttarget::regtype, castcontext
FROM   pg_cast
WHERE  casttarget = 'timestamptz'::regtype;

         castsource          |        casttarget        | castcontext
-----------------------------+--------------------------+-------------
 abstime                     | timestamp with time zone | i
 date                        | timestamp with time zone | i
 timestamp without time zone | timestamp with time zone | i
 timestamp with time zone    | timestamp with time zone | i