生活随笔
收集整理的這篇文章主要介紹了
odps sql 日期函数处理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
日期處理
to_date
- 命令格式:
to_date(string, format) - 用途:
將一個字符串按照format指定的格式轉成日期值。
SELECT to_date('20200401','yyyymmdd');
> 2020-04-01 00:00:00
to_char
- 命令格式:
to_char(datetime, format) - 用途:
將日期類型按照format指定的格式轉成字符串
select TO_CHAR(TO_DATE('20200401','yyyymmdd'),'yyyy-mm-dd');
>2020-04-01
select TO_CHAR('2020-04-01 20:20:20','yyyy-mm-dd');
>2020-04-01
select TO_CHAR('2020-04-01 20:20:20','yyyymmdd');
>20200401
select TO_CHAR('2020-04-01 20:20:20','yyyy-mm-dd hh');
>2020-04-01 20
select TO_CHAR('2020-04-01 20:20:20','yyyymmddhh');
>2020040120
select TO_CHAR('2020-04-01 20:20:20','hh');
>20
datepart
- 命令格式:
datepart(datetime, part) - 用途:
提取日期中part指定的部分 - 參數說明:
● datetime: datetime類型,日期值,若輸入為string類型會隱式轉換為datetime類型后參與運算,其它類型拋異常。
● part:string類型常量。支持的pattern包括yyyy、mm、dd、hh、mi、ss,此外也支持擴展的日期格式, 年-“year”, 月-“month”或”mon”, 日-“day”, 小時-“hour”。。不支持的pattern或其它類型會拋異常。 - 返回值:
返回值類型為bigint.若任一輸入參數為NULL,返回NULL。
select datepart('2020-04-01 20:20:20','yyyy');
>2020
select datepart('2020-04-01 20:20:20','mm');
>4
select datepart('2020-04-01 20:20:20','mi');
>20
時間戳與日期轉換
- 定義
時間戳是指格林威治時間1970年01月01日00時00分00秒(北京時間1970年01月01日08時00分00秒)起至現在的總毫秒數。
日期轉時間戳
- 命令格式:
unix_timestamp(datetime) - 用途:
將日期轉化為整型的unix格式的日期時間值 - 參數說明:
● datetime: datetime類型日期值,若輸入為string類型會隱式轉換為datetime類型后參與運算,其它類型拋異常。 - 返回值:
整型unix格式日期值, datetime為NULL時返回NULL
## 日期轉化為時間戳 ##
select unix_timestamp('2020-04-01 20:20:20');
> 1585743620
select unix_timestamp('2020-04-01 00:00:00');
>1585670400
SELECT unix_timestamp(to_date('20200401','yyyymmdd'));
>1585670400
時間戳轉化為日期
- 命令格式:
from_unixtime(unixtime) - 用途:
將數字型的unix 時間日期值轉為DE日期值
select from_unixtime (1585743620)
>2020-04-01 20:20:20
日期計算函數
dateadd
- 命令格式:
dateadd(datetime, delta, datepart) - 用途:
按照指定的單位和幅度修改datetime的值
SELECT DATEADD('2020-04-01 20:20:20',1,'dd');
>2020-04-02 20:20:20
SELECT DATEADD('2020-04-01 20:20:20',1,'dd');
>2020-03-31 20:20:20對年修改 yyyy
對月修改 mm
對天修改 dd
對小時修改 hh
對分鐘修改 mi
對秒修改 ss
datediff
命令格式:
datediff(endtime, starttime, datepart)
用途:
計算兩個時間的差值,并轉換成指定的單位,如:秒。
若start = ‘2005-12-31 23:59:59’, end = ‘2006-01-01 00:00:00’:
select datediff(end, start, 'dd') = 1
select datediff(end, start, 'mm') = 1
select datediff(end, start, 'yyyy') = 1
select datediff(end, start, 'hh') = 1
select datediff(end, start, 'mi') = 1
select datediff(end, start, 'ss') = 1
datetrunc
- 命令格式:
datetrunc (datetime,format) - 用途:
返回截取后的日期值。
select datetrunc("2011-12-07 16:28:46", "yyyy")> "2011-01-01 00:00:00"
select datetrunc("2011-12-07 16:28:46", "month")
>"2011-12-01 00:00:00"
select datetrunc("2011-12-07 16:28:46", "dd")
> "2011-12-07 00:00:00"
select datetrunc("2011-12-07 16:28:46", "hh");
>2011-12-07 16:00:00
select datetrunc("2011-12-07 16:28:46", "mi");
>2011-12-07 16:28
select datetrunc("2011-12-07 16:28:46", "ss");
>2011-12-07 16:28:46
總結
以上是生活随笔為你收集整理的odps sql 日期函数处理的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。