| 函数 | 说明 | 返回值类型 |
|---|---|---|
age(end: timestamptz, begin: timestamptz) |
计算begin和end之间的时间间隔。 |
interval |
age(val: timestamptz) |
计算val与当前时间之间的间隔。 |
interval |
clock_timestamp() |
返回一个集群节点上的当前系统时间。 | timestamp |
current_date() |
返回当前事务的日期。该值基于事务开始时选择的时间戳记,并且在整个事务中保持不变。此时间戳与并发事务的提交顺序没有关系。 | date |
current_timestamp() |
返回当前事务的时间。该值基于事务开始时选择的时间戳记,并且在整个事务中保持不变。此时间戳与并发事务的提交顺序没有关系。 | date |
current_timestamp() |
返回当前事务的时间。该值基于事务开始时选择的时间戳记,并且在整个事务中保持不变。此时间戳与并发事务的提交顺序没有关系。 | timestamp |
date_trunc(element: string, input: time) → interval |
input精确到截断element。将所有不重要的字段设置element为零。兼容元素:时,分,秒,毫秒,微秒。 |
interval |
date_trunc(element: string, input: timestamp) → timestamp |
input精确到截断element。将所有不重要的字段设置element为零(对于日和月,则为一)兼容的元素:年,季,月,周,小时,分钟,秒,毫秒,微秒。 |
timestamp |
date_trunc(element: string, input: timestamptz) |
input精确到截断element。将所有不重要的字段设置element为零(对于日和月,则为一)兼容的元素:年,季,月,周,小时,分钟,秒,毫秒,微秒。 |
timestamptz |
experimental_follower_read_timestamp() |
返回一个时间戳,很可能可以安全地针对跟随者副本执行。此功能旨在与AS OF SYSTEM TIME子句一起使用,以对最近的时间执行历史读取,但时间要足够长,以便针对给定范围内的当前租户(相对于最近的租户)执行读取操作。请注意,此功能需要CCL发行版上的企业许可证才能无错误地返回。 | timestamptz |
experimental_strftime(input: date, extract_format: string) |
从中input提取和格式化extract_format使用标准strftime符号标识的时间(尽管并非所有格式都受支持)。 |
string |
experimental_strftime(input: timestamp, extract_format: string) |
从中input提取和格式化extract_format使用标准strftime符号标识的时间(尽管并非所有格式都受支持)。 |
string |
experimental_strftime(input: timestamptz, extract_format: string) |
从中input提取和格式化extract_format使用标准strftime符号标识的时间(尽管并非所有格式都受支持)。 |
string |
experimental_strptime(input: string, format: string) |
input使用format(使用标准strptime格式)作为时间戳返回。 |
timestamptz |
extract(element: string, input: date) |
element从中提取input。兼容的元素:年,季度,月,周,星期几,年日,小时,分钟,秒,毫秒,微秒 |
int |
extract(element: string, input: time) |
element从中提取input。兼容的元素:小时,分钟,秒,毫秒,微秒 |
int |
extract(element: string, input: timestamp) |
element从中提取input。兼容的元素:年,季度,月,周,星期几,年日,小时,分钟,秒,毫秒,微秒 |
int |
extract(element: string, input: timestamptz) |
element从中提取input。兼容的元素:年,季度,月,周,星期几,年日,小时,分钟,秒,毫秒,微秒 |
int |
now() |
返回当前交易的时间。该值基于事务开始时选择的时间戳记,并且在整个事务中保持不变。此时间戳与并发事务的提交顺序没有关系。 | date |
now() |
返回当前交易的时间。该值基于事务开始时选择的时间戳记,并且在整个事务中保持不变。此时间戳与并发事务的提交顺序没有关系。 | timestamp |
statement_timestamp() |
返回当前语句的开始时间。 | timestamp |
timezone(timestamp: timestamp, timezone: string) |
将不带时区的给定时间戳视为位于指定时区中 | timestamp |
transaction_timestamp() |
返回当前交易的时间。该值基于事务开始时选择的时间戳记,并且在整个事务中保持不变。此时间戳与并发事务的提交顺序没有关系。 | date |
transaction_timestamp() |
返回当前交易的时间。该值基于事务开始时选择的时间戳记,并且在整个事务中保持不变。此时间戳与并发事务的提交顺序没有关系。 | timestamp |
案例:
age(end: timestamptz, begin: timestamptz)
计算end和begin之间的时间间隔,结果体现为前值减去后值
select age(TIMESTAMPTZ '2022-03-26 14:22:10+08:00',TIMESTAMPTZ '2020-02-26 10:10:10-05:00');
age
+--------------------------+
2 years 28 days 15:12:00
age(val: timestamptz)
与当前时间的间隔
select age(TIMESTAMPTZ '2021-11-26 14:22:10+08:00');
age
+--------------------------------+
10 mons 14 days 23:57:43.199154
current_date()
展示当前时间(年月日)
select current_date();
current_date
+-----------------------------+
2022-10-11
localtime()
展示当前时间(时分秒)
select localtime();
localtime
+---------------+
16:33:30
localtimestamp显示时间(年月日时分秒)
select localtimestamp();
localtimestamp
------------------------------
2022-11-04 10:21:11.173667
current_timestamp()或者now()
展示当前完整时间
select current_timestamp();
current_timestamp()
+-----------------------------+
2022-10-11 14:28:42.693 +0800
或者
select now();
now()
+-----------------------------+
2022-10-11 14:32:38.070 +0800
date_trunc(x,input:date)
截断时间,后边清零,x(year, quarter, month, week, hour, minute, second, millisecond, microsecond)
select date_trunc('day',TIMESTAMPTZ '2022-11-12 14:22:10+08:00') as date_day;
date_day
+---------------------------+
2022-11-12 00:00:00.000 +0800
(1 row)
select date_trunc('month',TIMESTAMPTZ '2022-11-12 14:22:10+08:00') as date_month;
date_month
+---------------------------+
2022-11-01 00:00:00.000 +0800
(1 row)
extract(x,input:date)
input中提取x(year, quarter, month, week, dayofweek, hour, minute, second, millisecond, microsecond)
提取日期中的月份
select extract('month',TIMESTAMPTZ '2022-10-11 16:22:10+08:00');
extract
+---------+
10
根据日期提取今天是星期几,若返回0,则代表星期日
select extract('dayofweek',TIMESTAMPTZ '2022-10-16 16:22:10+08:00') as dayinweek;
dayinweek
+---------+
0
select extract('dayofweek',TIMESTAMPTZ '2022-10-11 16:22:10+08:00') as dayinweek;
dayinweek
+---------+
2
- 获取当前时间是在年中的第多少周
select extract('week',TIMESTAMPTZ '2022-10-16 16:22:10+08:00') as weekofyear;
weekofyear
+------------+
41
- 日期转字符串,用函数
experimental_strftime()
select experimental_strftime(b,'%Y-%m-%d %H:%M:%S') from a;
experimental_strftime
-------------------------
2018-12-21 10:21:24
(1 row)
- 字符串转日期,用函数
experimental_strptime()
SELECT experimental_strptime(a,'%Y-%m-%d %H:%M:%S') FROM b;
experimental_strptime
--------------------------
2018-12-21 18:21:24+08
- 时间的增减
增加一秒
SELECT now(), now() + interval '1s' as newnow;
now() | newnow
---------------------------------------+------------------------------
2022-10-11 15:47:23.380 +0800 | 2022-10-11 15:47:24.380 +0800
增加一天
SELECT now(), now() + interval '1 day' as newnow;
now | newnow
--------------------------------+--------------------------------
2022-10-18 11:06:25.522553+08 | 2022-10-19 11:06:25.522553+08
- 获取本月的最后一天的日期
SELECT (date_trunc('month',now()) + INTERVAL '1 MONTH' + INTERVAL '-1 day')::DATE
date
--------------------------
2022-10-31
- 或取当月最后一天的时间戳
SELECT (date_trunc('month',now()) + INTERVAL '1 MONTH' + INTERVAL '-1 second')::timestamp
date
--------------------------
2022-10-31 23:59:59.000
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




