欢迎光临
我们一直在努力

redshift 常用查询

dateadd(day, -10, CURRENT_DATE)   当前日期减去10天,

也可直接CURRENT_DATE – 10

区别:

select dateadd(day, -7, current_date) as cur_date    2018-11-27 00:00:00

select current_date – 7 as cur_date  2018-11-27

left(current_date, 10) 截取前10位字符

2018-12-04

 

coalesce(cid, a1, a2, a3, ….) cid返回如果 为空,返回a1, a2,a3的第一个非空值,如果 全空,返回空

nullif(id1, id2) 在id1和Id2匹配时返回Null, 不匹配时返回第一个

select nullif(1, 1) as a     返回   为空

select nullif(1, 2) as a 返回 1

select add_months(‘2008-03-31′,1)  2008-04-30 00:00:00

select datediff(day,’2009-01-01′,’2009-12-31’) as numweeks;   364 返回两个时间的差值,以日,小时,周来统计

select date_part(year, ‘2009-01-01 02:08:01’) as year, date_part(month, ‘2009-01-01 02:08:01’) as month,
date_part(day, ‘2009-01-01 02:08:01’) as day, date_part(hour, ‘2009-01-01 02:08:01’) as hour,
date_part(minute, ‘2009-01-01 02:08:01’) as minute, date_part(second, ‘2009-01-01 02:08:01’) as second

2009.0 1.0 1.0 2.0 8.0 1.0

分别返回一个时间的各个部分,并且可以用dow ,来返回day of week,

select extract(week from dateadd(day, 7, current_date)) as weeknum

extract ,提取当前时间的日期部分,比如上面,就提取了当前时间的周数,即一年中的第几周,加7后,就多了一周

getdate()  返回当前时间 2018-12-05 03:07:29

trunc()  返回当前日期,不包括时间

interval_cmp(‘3 days’,’1 year’)     返回两个时间的大小,大,返回1,小,-1, 等,0

getdate()  获取当前 UTC时间,即格林尼治时间,比北京时间早8个小时

last_day()  获取 当前月最后一天的日期

select last_day(getdate())  返回  2018-12-31

months_between(‘1969-01-29’, ‘1969-03-18’) 返回1.65, 小数部分根据日期和时间计算得来

next_day(‘2018-12-05′,’Thursday’);  返回当前日期之后第一个星期二,返回 2018-12-06

timeofday()  返回 当前时间 ,包括星期几,Wed Dec 05 03:41:25.960121 2018 UTC

timestamp_cmp(‘1969-01-29’, ‘1969-03-18’)  比较两个日期的大小,大1, 小-1, 等0, 按字母顺序比较

timestamp_cmp(‘2009-01-01 02:08:01’, ‘2010-03-18’)  比较时间戳的值和日期的值的大小,大1,小-1,等0,按字母顺序比较

字符串类:

||  连接运算符,类似于python中的+,

bpcharcmp(str1, str2), 比较两个字符串的大小,大1, 小-1, 等0

btrim(str1, match_str), 删除str1中前导和尾随空格,并删除前导和尾随的match_str,

char_length(str1)类似于python里的len()

 

赞(1) 打赏
未经允许不得转载:乌西塔 » redshift 常用查询

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

微信扫一扫打赏