vertica之时间相关的函数

-- * 注意: 本文的SQL是在 2017-09-14 测试的. 所以如果取当前日期, 结果为 2017-09-14* 

----------------------------
-- 相关数据类型
----------------------------
vertica 的 Date 类型仅包含日期, 而Oracle的Date的类不仅包含日期而且包含时间. 
vertica 的 time, 不带日期, 仅包含小时分秒
vertica 的 timestamp 是完整的时间, 包含日期和时分秒
vertica 的 Datetime 类型是 timestamp 类型的同义词
interval 也是一种数据类型, 下面是几个示例:
interval ‘1:10:20‘ --时间间隔为1小时 10分 20秒
interval ‘5 year 1 month 1:10:20‘ --时间间隔为5年1一个月1个小时 10分 20秒
interval 中的时间单位包含year/month/day/hour/minute/second, 在表达式中既可以使用单数形式的英文, 也可以使用复数形式, 如果没有年月日英文,第一个出现的数值就表示小时, 然后是分和秒. 
在Table中, 可以定义两种类型的interval字段, 分别是:
(1) INTERVAL DAY TO SECOND, 这个较为常用,精度是微秒,正负一亿多天的范围, 如果使用 literal的方式插值, 可以是几天几个小时几分几秒
(2) INTERVAL YEAR TO MONTH, 精度是到月,范围超级大, 如果使用 literal的方式插值, 可以是几年几个月, d但不能包含几天几个小时几分几秒

----------------------------
-- literal date/timestamp cast
----------------------------
select date(‘2014-07-25‘) --OK
select date(‘20140725‘) --OK
select date(‘2014/07/25‘) --OK
select date(‘now‘) -- 当天
select date(‘TODAY‘) -- 当天
select date(‘YESTERDAY‘) -- 昨天
select date(‘TOMORROW‘) -- 明天

----------------------------
-- 得到当前日期和时间戳
----------------------------
date(‘now‘) --result: 2017-09-14
date(‘TODAY‘) --result: 2017-09-14
select current_date --result: 2017-09-14
SELECT sysdate() --result: 2017-09-14 13:07:59
SELECT SYSDATE --result: 2017-09-14 13:07:59
select CURRENT_TIMESTAMP --result: 2017-09-14 13:07:59
select GETDATE() --返回当前时间戳, 注意是时间戳
select GETUTCDATE() --返回当前UTC的时间戳, 注意是时间戳

----------------------------
-- 数据类型转换和extract提取
----------------------------
select TO_DATE(‘20100101‘,‘YYYYMMDD‘)

select date(current_timestamp) -- timestamp 可以直接转成date类
select TO_TIMESTAMP(‘20100101 ‘,‘YYYYMMDD‘) -- 转成时间戳格式
SELECT TO_TIMESTAMP(‘20100101 23:59:59‘,‘YYYYMMDD HH24:MI:SS‘)
SELECT TO_TIMESTAMP(‘20100101 23:59:59:999 ‘,‘YYYYMMDD HH24:MI:SS:MS‘)
select date(‘now‘) + interval ‘0‘ -- date 转成 timestamp
select date(current_timestamp) -- timestamp 可以直接转成date类
select year(current_timestamp) --extract year
select month(current_timestamp) --extract month
SELECT day(current_timestamp) --extract day
select hour(CURRENT_TIME) --extract 小时值
select minute(CURRENT_TIME) --extract 分钟值

----------------------------
-- 时间加减
-- date和timestamp都可以直接加数值, 也可以加 interval.
-- 加数值的话, 原来是什么类型结果就是什么类型.
-- 加一个interval, 其结果一定是 timestamp(即使原来是date类型)
----------------------------

select date(‘TOMORROW‘) - date(‘today‘) -- 相差一天, 结果是:数值1
select date(‘now‘)+1 -- 结果为明天
select date(‘now‘) + interval ‘20 day‘ -- 加20天, 结果是时间戳
SELECT date(‘now‘) + interval ‘6:6:6‘ --结果是时间戳, 2017-09-14 06:06:06
select date(‘now‘) + interval ‘1‘ --结果是时间戳, 明天的零点
select date(‘now‘) + interval ‘0:1‘ --结果是时间戳, 明天的零点
select date(‘now‘) + interval ‘20 year‘ --结果是时间戳, 加20年
select current_timestamp + 1 --结果是时间戳,明天的同一时间
select current_timestamp + interval ‘1‘ --结果是时间戳,明天的同一时间
select date(‘now‘) + interval ‘0‘ -- date 转成 timestamp
SELECT ADD_MONTHS(‘20170131‘, 1) -- 加一个月, 结果为 2017-02-28
SELECT ADD_MONTHS(‘20171231‘, -1) -- 减一个月, 结果为 2017-11-30
select age_in_months(date(‘now‘),date(‘now‘) + interval ‘1 year‘) --相差几个月, 结果是-12
select age_in_months(date(‘now‘),date(‘now‘) + interval ‘1 year‘) --相差几个月, 结果是-12
select age_in_years(date(‘now‘) + interval ‘18 month‘ ,date(‘now‘) ) --相差几年,结果是1
select age_in_years(date(‘now‘) ,date(‘now‘) + interval ‘18 month‘) --相差几年,结果是-2

----------------------------
-- 几个关键词
----------------------------
select CURRENT_DATABASE --CURRENT_DATABASE 是关键词, 但也可当函数用 CURRENT_DATABASE()
select CURRENT_SCHEMA --CURRENT_SCHEMA 是关键词, 但也可当函数用 CURRENT_SCHEMA()
select CURRENT_USER --CURRENT_USER 是关键字, 但也可当函数用 CURRENT_USER()
select current_date --current_date 是关键字, 但可也当函数用 current_date()
SELECT CURRENT_TIME -- CURRENT_TIME 是关键字, 不同于其他CURRENT开头的关键词, 这个关键词不能当函数使用 , select CURRENT_TIME() 会报错
SELECT current_timestamp -- current_timestamp 是关键字, 不同于其他CURRENT开头的关键词, 这个关键词不能当函数使用 , select current_timestamp() 会报错

时间: 2024-12-16 23:14:08

vertica之时间相关的函数的相关文章

Mysql 与日期和时间相关的函数

目录: 常用日期函数 时间加减函数 date_forma函数 1. 常用日期函数 now() current_timestamp() sysdate() 实例一: 从上图可以看出三个函数都是用来获取当前的系统时间. 实例二: 在上图操作中,加入sleep函数,等待了2秒,这时发现sysdate函数和其它两个函数得到的值时不同的,sysdate函数得到的值快了2秒.所以三个函数还是有略微区别的,区别如下: current_timestamp和now是同义词,两者是相同的. sysdate函数返回的

Abaqus 幅值曲线—与时间相关的函数定义

目录 1. 概览 2. 操作方法 1. 概览 在Abaqus中,可以指定条件定义中参照一条幅值曲线,来指定复杂的时间或者频率相关的边界条件.载荷和预定义的场. 在Abaqus/Standard中,可以在用户子程序中定义许多指定条件的变化.在这样的条件下,变量的大小可以位置和时间以任何形式发生变化. 在默认情况下,载荷.边界条件和预定义的场要么在整个步上(斜线函数)随时间线性变化,要么瞬时施加并在整个步上(阶跃函数)保持不变. 2. 操作方法 幅值曲线定义方法 Abaqus/CAE用法:Load

lua的几个时间相关处理函数

随手写的,项目中没用,不一定对,只作参考. --游戏时间相关函数 local gt = {} local math = math local ONE_MINUTE = 60 local ONE_HOUR = ONE_MINUTE * ONE_MINUTE local ONE_DAY = ONE_HOUR * 24 local ONE_WEEK = ONE_DAY*7 --本地时间2000-01-01 00:00对应UTC local sec_2000 = os.time{year=2000,mo

vertica截取函数-split_part

最近工作中遇到一个问题:vertica数据库,开发在入时间数据时格式为CST时间格式,导致查看数据时非常不方便.想了很久,终于想到了一个临时解决方案.vertica的时间转换函数均不支持转换(至少todate,datetimestamp不可以,^^).数据库中时间格式如下 开始发现date函数可以将该数据转换成yyyy-mm-dd,没有时分秒. 此时想到另外一种想法,就是拼接,原来时间函数中时分秒格式没有问题,date可以转换成年月日,两个数据进行拼接,岂不美哉! 首先获取时分秒:使用split

awk(三)函数

函数是一个独立计算的过程,它接收一些参数并返回一些值 awk有很多内置函数,分为:算术函数和字符串函数 算术函数 cos(x) 返回x的余弦(x为弧度) exp(x) 返回e的x次幂 int(x) 返回x的整数部分的值 log(x) 返回x的自然对数(以e为底) sin(x) 返回x的正弦(x为弧度) sqrt(x) 返回x atan2(y,x) 返回y/x的反正切,其值在-180度到180度之间 rand() 返回随机数r,其中0<=r<1 srand(x) 建立rand()的新的种子数,如

uC/OS-II 函数之信号量相关函数

上文主要介绍了时间相关的函数,本文介绍信号量相关的函数:OSSemCreate()建立信号量函数,OSSemPend()取得使用权函数,OSSemPost()使用权递加函数 信号量介绍 如果我们想对一个公共资源进行互斥访问,例如:如果我们想让两个任务Task1和Task2都可以调用Fun()函数,但不能同时调用,最好定义信号量:Semp = OSSemCreate(1),同理在各自的任务中都需要调用OSSemPend(Semp,0,&err)请求此信号量,如果可用,则调用Fun(),然后再用OS

uC/OS-II 函数之时间相关函数

获得更多资料欢迎进入我的网站或者 csdn或者博客园 对于有热心的小伙伴在微博上私信我,说我的uC/OS-II 一些函数简介篇幅有些过于长应该分开介绍.应小伙伴的要求,特此将文章分开进行讲解.上文主要介绍了任务相关的函数,本文介绍时间相关的函数:OSTimeDly()延时节拍函数,OSTimeDlyHMSM()系统延时函数,OSTimeDlyResume()延时恢复函数 OSTimeDly()延时节拍函数 1.主要作用:调用该函数的任务将自己延时一段时间并执行一次任务调度,一旦规定的延时时间完成

SQL Server日期函数应用

SQL SERVER 中提供了日期时间相关的函数,在编写SQL时,根据实际的业务要求,选择合适的函数使用. 日期函数应用: 1.获取当前日期时间 GETDATE() 2.获取日期时间中的一部分数据 DATENAME ( datepart , date )  返回date中datepart部分的字符串 DATEPART( datepart , date ) 返回date中datepart部分的整数 YEAR( date )  返回date中整数年 MONTH( date )   返回date中整数

(转)SQLite内置函数

一.聚合函数: SQLite中支持的聚合函数在很多其他的关系型数据库中也同样支持,因此我们这里将只是给出每个聚集函数的简要说明,而不在给出更多的示例了.这里还需要进一步说明的是,对于所有聚合函数而言,distinct关键字可以作为函数参数字段的前置属性,以便在进行计算时忽略到所有重复的字段值,如count(distinct x) 函数 说明 avg(x) 该函数返回在同一组内参数字段的平均值.对于不能转换为数字值的String和BLOB类型的字段值,如'HELLO',SQLite会将其视为0.a