Zia*_*a J 16 sql google-bigquery
我有日期存储Epoch Time
,我想从中提取
Date
.我尝试了下面的代码,我得到null
了输出.
date_add( (timestamp( Hp.ASSIGN_TIME)), 1970-01-01,"second" ) as Extracted_date_Epoch
Run Code Online (Sandbox Code Playgroud)
出行时间格式(1424184621000000)
还有一个问题.下面的代码给了我正确的日子,但不是工作日,它给了所有的日子,是否有可能在大纪元时间存储两次之前的工作日?
INTEGER(((Hp.ASSIGN_TIME - Hp.ARRIVAL_TIME) / 1000000) / 86400) as Days
Run Code Online (Sandbox Code Playgroud)Qor*_*ani 20
要转换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
Run Code Online (Sandbox Code Playgroud)
要计算两个日期之间的天数(例如,在2015年6月1日至2015年6月20日之间),您可以执行以下操作:
SELECT (DATEDIFF(TIMESTAMP('2015-06-20'), TIMESTAMP('2015-06-01')) + 1)
Run Code Online (Sandbox Code Playgroud)
最后计算工作日,您可以使用以下内容:
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)
Run Code Online (Sandbox Code Playgroud)
这是简单的工作日计算,将周六和周日视为周末而不涉及任何假期.
Kri*_*naa 19
如果您在BigQuery中使用standardSQL方言,则此函数将转换为人类可读时间戳TIMESTAMP_MICROS(1424184621000000) - > 2015-02-17 14:50:21 UTC.参考:https: //cloud.google.com/bigquery/docs/reference/standard-sql/functions-and-operators#timestamp-string
归档时间: |
|
查看次数: |
28013 次 |
最近记录: |