presto 日期函式和操作

2022-06-22 15:09:12 字數 1591 閱讀 9591

date '2012-08-08' + interval '2' day  日期增加 兩天 ,結果 : '2012-08-10'

presto 是乙個工具,被用來通過分布式查詢來有效的查詢大量的資料。presto 是乙個可選的工具,

可以用來查詢 hdfs,通過使用 mapreduce 的作業的流水線,例如 hive,pig,但是又不限於查詢 hdfs 資料,

它還能查詢其他的不同資料來源的資料,包括關聯式資料庫以及其他的資料來源,比如 cassandra;

presto 被設計為處理資料倉儲和分析:分析資料,聚合大量的資料並產生報表,這些場景通常被定義為 olap。

presto 使用時注意:

主要是各種格式轉換,表(table)中所有資料均是string格式,所有的格式均需要轉換:

1)日期需要轉化為date型

2)除法中分子&分母需要轉化為double型

3)因為create_time是2019-01-01 00:00:00.0的格式,我用substr取前10位,結果在presto中就成空了,我就用的split函式根據空格分割的create_time,然後取分割後的第一部分,在presto中取第一部分是[1]不是[0]

4)如果需要計算前幾天的 日期可以用

絕對日期:date '2019-03-15' - interval '2' day,也就是2019-03-13

相對日期:假如今天是2019-03-15,也可以用cast(sysdate(-1) as date) - interval '1' day,也就是2019-03-13

舉個栗子,如下

select

'num_07d' as zhibiao,

zb,num,

num_all,

cast(num as double) / cast(num_all as double) as ration

from

(select

index_a as zb,

count(id) as num

from

table

where

dp = 'active'

and cast(split(create_time, ' ') [1] as date) <= cast(sysdate(-2) as date)

and cast(split(create_time, ' ') [1] as date) >(cast(sysdate(-2) as date) - interval '7' day)

group by

index_a)a,

(select

count(id) as num_all

from

table

where

dp = 'active'

and cast(split(create_time, ' ') [1] as date) <= cast(sysdate(-2) as date)

and cast(split(create_time, ' ') [1] as date) >(cast(sysdate(-2) as date) - interval '7' day)

)b

presto常用函式

1.時間格式化 to char time,yyyy mm dd hh24 mi ss 注意presto中沒有mm 2.非空判斷 coalesce l.remark,空 類似nvl 3.型別轉換 cast amount as decimal 36.2 cast id as varchar 4.行轉列 ...

Presto 常用函式

presto是乙個分布式的sql互動式查詢引擎,基於記憶體的,可以達到hive查詢效率的5到10倍,支援多種資料來源的秒級查詢。另外除了基於記憶體之外,還有優化如下 參考operator example result date 2012 08 08 interval 2 day2012 08 10 ...

Oracle日期操作函式

四 日期環境變數 oracle採用date型別表示日期時間,這是乙個7位元組的固定寬度的資料型別,有7個屬性,包括 世紀 世紀中哪一年 月份 月中的哪一天 小時 分鐘和秒。本文中把date型別稱為日期時間型別,簡稱日期。對程式語言來說,日期是用字串來顯示和書寫的,如果設定了nls date form...