Tom*_*eif 3 postgresql types timestamp postgresql-9.1 generate-series
文档的generate_series
说这样的说法可能是int
或bigint
用于generate_series(start, stop)
与generate_series(start, stop, step)
案件timestamp
或timestamp with time zone
为generate_series(start, stop, step interval)
.
generate_series
使用date
类型作为输入和返回的原因是什么timestamp with timezone
?
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)
Run Code Online (Sandbox Code Playgroud)
由于函数的类型,我们也可以通过date
值 generate_series()
,因为有一个隐含的投从date
到timestamp
以及从date
到timestamptz
.将是模棱两可的,但在"日期/时间类型"中timestamptz
是"首选 ".详细说明:
在裸露date
的00:00
情况下,演员表示当地时间.请注意,如果您使用date
输入作为输入,则当前时区设置会直接影响结果,因为很明显,"2014-01-10 00:00"代表Tokio中与纽约不同的时间点.
Postgres基本上区分了三种类型的演员表:
Explicit casts
..使用CAST
或::
语法时.
Assignment cast
..将值分配给目标列时的隐式转换.
Implicit cast
..隐式转换所有其他表达式.
系统中必须存在从输入类型到预期类型的隐式转换,以使函数静默接受(和转换)输入值.
要查看定义了 哪些强制类型转换timestamptz
,您可以查询目录表pg_cast
:
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
Run Code Online (Sandbox Code Playgroud)
所有这些演员都是隐含的.每个文档castcontext
:
指示可以调用强制转换的上下文.
e
仅表示显式强制转换(使用CAST
或::
语法).a
意味着隐式地分配给目标列,也明确表示.i
在表达式中隐含地表示,以及其他情况.
大胆强调我的.
归档时间: |
|
查看次数: |
4378 次 |
最近记录: |