Epoch Time
中,我想从中提取Date
。我尝试了下面的代码,并将null
作为输出。
date_add( (时间戳( Hp.ASSIGN_TIME)),1970-01-01,“第二”)为Extracted_date_Epoch
Ex时间格式(1424184621000000)发布于 2015-06-06 17:12:58
BigQuery提供了两种SQL模式。最初的答案是基于传统模式,但后来我决定通过添加标准模式替代方案来更新答案。
遗留模式
要将timestamp
转换为date
,可以使用BigQuery日期/时间函数
SELECT TIMESTAMP(1424184621000000) # 2015-02-17 14:50:21 UTC
SELECT TIMESTAMP_MICROS(1230219000000000) # 2008-12-25 15:30:00 UTC
SELECT TIMESTAMP_MILLIS(1230219000000) # 2008-12-25 15:30:00 UTC
SELECT DATE(TIMESTAMP(1424184621000000)) # 2015-02-17
SELECT DATE(TIMESTAMP('2015-02-17')) # 2015-02-17
SELECT INTEGER(TIMESTAMP('2015-02-17')) # 1424131200000000
要计算两个日期之间的天数(例如6/1/15至6/20/15之间),您可以这样做:
SELECT (DATEDIFF(TIMESTAMP('2015-06-20'), TIMESTAMP('2015-06-01')) + 1)
最后,要计算营业天数,可以使用以下方法:
SELECT
(DATEDIFF(TIMESTAMP('2015-06-20'), TIMESTAMP('2015-06-01')) + 1)
-(INTEGER((DATEDIFF(TIMESTAMP('2015-06-20'), TIMESTAMP('2015-06-01')) + 1) / 7) * 2)
-(CASE WHEN DAYOFWEEK(TIMESTAMP('2015-06-01')) = 1 THEN 1 ELSE 0 END)
-(CASE WHEN DAYOFWEEK(TIMESTAMP('2015-06-20')) = 7 THEN 1 ELSE 0 END)
这是一个简单的工作日计算,把星期六和太阳当作周末,而不包括任何假期。
标准模式
下面是一些处理TIMESTAMP
和DATE
的示例函数。
SELECT TIMESTAMP_SECONDS(1230219000) -- 2008-12-25 15:30:00 UTC
SELECT TIMESTAMP_MILLIS(1230219000000) -- 2008-12-25 15:30:00 UTC
SELECT TIMESTAMP_MICROS(1230219000000000) -- 2008-12-25 15:30:00 UTC
SELECT DATE(TIMESTAMP_SECONDS(1230219000)) -- 2008-12-25
SELECT CAST('2008-12-25' AS DATE) -- 2008-12-25
SELECT DATE('2008-12-25', 'UTC') -- 2008-12-25
用于计算两个日期之间的天数:
SELECT DATE_DIFF(DATE('2015-06-20'), DATE('2015-06-01'), DAY)
最后,像上面这样计算简单的营业天数:
SELECT
DATE_DIFF(DATE('2015-06-20'), DATE('2015-06-01'), DAY)
- DIV(DATE_DIFF(DATE('2015-06-20'), DATE('2015-06-01'), DAY),7)*2
- IF(EXTRACT(DAYOFWEEK FROM DATE('2015-06-01'))=1,1,0)
- IF(EXTRACT(DAYOFWEEK FROM DATE('2015-06-20'))=7,1,0)
https://stackoverflow.com/questions/30684920
复制相似问题