SQL重新格式化时间戳字段

时间:2019-01-24 15:46:25

标签: sql google-bigquery

我正在使用Java和SQL查询BigQuery中的表。我要实现以下目标:

  • 拉表
  • 将字符串(例如2018年1月8日)重新格式化为时间戳记(例如2018年1月1日23:59:28 UTC)
  • 将所有新数据推回到新表或现有表中

目前,我成功使用以下方法拉表:

$project = Project::find($request->get('project_id');
if (!$project) {
    // Project not found in database
    // Handle it
}

是否可以包含一条采用现有String时间字段并将其重新格式化以匹配Timestamp格式的SQL更新语句?我知道初始时间String包含的信息不足以作为时间戳记。我可以将丢失的值设为0(例如UTC 00:00:00)

2 个答案:

答案 0 :(得分:1)

结合使用与BigQuery时间戳相关的功能PARSE_TIMESTAMPFORMAT_TIMESTAMP来重新格式化时间戳

答案 1 :(得分:1)

  

是否可以包含一条采用现有String时间字段并将其重新格式化以匹配Timestamp格式的SQL更新语句?

请参见下面的BigQuery标准SQL示例

#standardSQL
WITH `project.dataset.table` AS (
  SELECT 'Jan 08 2018' AS date_as_string
)
SELECT date_as_string, PARSE_TIMESTAMP('%b %d %Y', date_as_string) date_as_timestamp
FROM `project.dataset.table`   

有结果

Row date_as_string  date_as_timestamp    
1   Jan 08 2018     2018-01-08 00:00:00 UTC