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 次 |
| 最近记录: |