我将数据从BigQuery移动到Oracle数据库,并试图找到处理时间戳的最佳方法。 Oracle DB只能导入csv文件,其日期格式为小端格式(dd/mm/yyyy hh:mi:ss),但默认情况下,BigQuery仅支持大端格式(yyyy-mm-dd hh:mi:ss)。时间戳与自定义格式的字符串
SELECT
t,
STRING(t) s
FROM
(SELECT TIMESTAMP(132456789101112) t)
Row t s
1 1974-03-14 01:33:09 UTC 1974-03-14 01:33:09.101112
我当然可以提取时间戳的不同组件,并将它们手工粘贴在一起(见下文),或写一些聪明的UDF,但我会感到惊讶,如果没有任何办法用BigQuery的标准功能来做到这一点。这似乎是一件很平常的事情,我事实上犹豫了一段时间。
SELECT
t,
CONCAT(
RIGHT(CONCAT("0", STRING(DAY(t))), 2), "/",
RIGHT(CONCAT("0", STRING(MONTH(t))), 2), "/",
RIGHT(CONCAT("000", STRING(YEAR(t))), 4), " ",
TIME(t)
) s
FROM
(SELECT TIMESTAMP(132456789101112) t)
Row t s
1 1974-03-14 01:33:09 UTC 14/03/1974 01:33:09
有没有像FORMAT(t, "dd/mm/yyyy hh:mi:ss")
东西还是有办法用正则表达式来做到这一点? (而不必Concat的几个REGEXP_EXTRACT
)