在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),但它给了我空值。
答案 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