我将数据从BigQuery移动到Oracle数据库,并试图找到处理时间戳的最佳方法.Oracle DB只能导入日期为小端格式(dd/mm/yyyy hh:mi:ss)的csv文件,但默认情况下BigQuery仅支持big endian(yyyy-mm-dd hh:mi:ss).
SELECT
t,
STRING(t) s
FROM
(SELECT TIMESTAMP(132456789101112) t)
Run Code Online (Sandbox Code Playgroud)
Row t s
1 1974-03-14 01:33:09 UTC 1974-03-14 01:33:09.101112
Run Code Online (Sandbox Code Playgroud)
我当然可以提取时间戳的不同组件并手动将它们粘贴在一起(见下文)或编写一些聪明的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)
Run Code Online (Sandbox Code Playgroud)
Row t s
1 1974-03-14 01:33:09 UTC 14/03/1974 01:33:09
Run Code Online (Sandbox Code Playgroud)
是否有类似FORMAT(t, "dd/mm/yyyy hh:mi:ss")的方法或使用regexp的方法?(无需连续几个REGEXP_EXTRACT.)
SELECT STRFTIME_UTC_USEC(CURRENT_TIMESTAMP(), '%d/%m/%Y %H:%M:%S')
Run Code Online (Sandbox Code Playgroud)
或者用你的例子
SELECT STRFTIME_UTC_USEC(TIMESTAMP(132456789101112), '%d/%m/%Y %H:%M:%S')
Run Code Online (Sandbox Code Playgroud)
对于使用Bigquery的标准SQL的用户,正确的方法是
FORMAT_TIMESTAMP或FORMAT_DATE取决于您的输入。
例如:
SELECT FORMAT_TIMESTAMP('%Y/%m/%d', TIMESTAMP('2017-11-01'))
将返回
2017/11/01
| 归档时间: |
|
| 查看次数: |
6970 次 |
| 最近记录: |