将字符串转换为日期并截断

时间:2015-02-28 22:13:11

标签: date google-bigquery truncation

在BigQuery中,我有一个名为initiate_date的字段,它接受字符串值,如

19-FEB-13 08.44.22.000000 PM -05:00 19-JUN-13 07.58.32.423526 PM -04:00

我想仅返回“2013-02-19' 2013-06-19'”等日期。我该怎么做?

我已经尝试了DATE(initiated_date),但它给了我空值。

1 个答案:

答案 0 :(得分:4)

如果你真的想要纯SQL解决方案来做这样的转换 - 这是一种方法:

SELECT yyyy + '-' + IF(LENGTH(m) < 2, '0' + m, m) + '-' + dd FROM (
SELECT 
  '20' + SUBSTR(x, 8, 2) as yyyy,
  STRING(CAST((INSTR('JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC',
                      SUBSTR(x, 4, 3)) - 1) / 3 + 1 AS INTEGER)) as m,
  SUBSTR(x, 1, 2) as dd
FROM
(SELECT '19-FEB-13 08.44.22.000000 PM -05:00' AS x),
(SELECT '02-DEC-12 18.24.12.000000 PM -05:00' AS x),
(SELECT '19-JUN-13 07.58.32.423526 PM -04:00' AS x))

它产生以下输出:

2013-02-19   
2012-12-02   
2013-06-19