暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

hubble数据库函数之时间函数

原创 Q5 2023-01-31
521
函数 说明 返回值类型
age(end: timestamptz, begin: timestamptz) 计算beginend之间的时间间隔。 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)

计算endbegin之间的时间间隔,结果体现为前值减去后值

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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论