Epoch Time
,我想从中提取Date
。我尝试了下面的代码,我得到null
作为输出。
date_add( (timestamp( Hp.ASSIGN_TIME)), 1970-01-01,"second" ) as Extracted_date_Epoch
出行时间格式(1424184621000000)INTEGER(((Hp.ASSIGN_TIME - Hp.ARRIVAL_TIME) / 1000000) / 86400) as Days
要将timestamp
转换为date
,您可以使用BigQuery date/time functions:
SELECT TIMESTAMP(1424184621000000) # 2015-02-17 14:50:21 UTC
SELECT DATE(TIMESTAMP(1424184621000000)) # 2015-02-17
SELECT DATE(TIMESTAMP('2015-02-17')) # 2015-02-17
SELECT INTEGER(TIMESTAMP('2015-02-17')) # 1424131200000000
要计算两个日期之间的天数(例如,在2015年6月1日至2015年6月20日之间),您可以执行以下操作:
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)
这是简单的工作日计算,将周六和周日视为周末而不涉及任何假期。
如果您在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
或者TIMESTAMP_SECONDS(visitStartTime)
秒,例如在Google Analytics中。
如果您有Legacy SQL选项,要回答问题1,给定一个UNIX纪元时间列(以毫秒为单位),如1524375336000,
我用过SELECT USEC_TO_TIMESTAMP(Hp.ASSIGN_TIME * 1000) AS the_date FROM table;
╔═══╦═══════════════╦═════════════════════════════╗
║ ║ ASSIGN_TIME ║ the_date ║
╠═══╬═══════════════╬═════════════════════════════╣
║ 1 ║ 1524375336000 ║ 2018-04-22 05:35:36.000 UTC ║
╚═══╩═══════════════╩═════════════════════════════╝
USEC_TO_TIMESTAMP(<expr>)
将以微秒为单位的UNIX时间戳转换为TIMESTAMP数据类型。例:
SELECT USEC_TO_TIMESTAMP(1349053323000000);
https://cloud.google.com/bigquery/docs/reference/legacy-sql#usec_to_timestamp