【问题标题】:Why Google Bigquery Datetime Format is with a 'T' separator? I want a space separator为什么 Google Bigquery 日期时间格式带有“T”分隔符?我想要一个空格分隔符
【发布时间】:2020-05-08 11:58:01
【问题描述】:

我正在 BigQuery 中使用 json 文件中的模式创建表,并将 DATETIME 数据类型提供给列。然后我简单地以 2020-01-01 00:00:00 的日期时间格式从 csv 加载数据,但是当它进入 bigquery 时,我可以看到它有一个“T”分隔符,即 2020-01-01T00:00 :00。

它甚至在 google bigquery 文档中提到 - YYYY-[M]M-[D]D[( |T)[H]H:[M]M:[S]S[.DDDDDD]] , ( |T ):空格或T 分隔符。但我不知道如何给出空格分隔符而不是默认的 T 分隔符。请帮忙。谢谢。

https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types

【问题讨论】:

  • “T”只是ISO 8601格式化日期时间字符串中日期和时间之间的默认分隔符
  • 是的,但是我可以通过任何方式获得空格分隔符,在加载数据或创建表格时可以通过任何方式指定吗?
  • 在哪里可以看到日期格式?日期以引擎认为合适的任何二进制格式存储。日期格式用于从/到字符串转换,即它们是一种显示功能。
  • 当我导出 bq 数据并将其保存在云存储位置时出现问题。然后运行 ​​HQL 作业以创建具有相同 bq 表架构的配置单元表。所以问题是 hive 表中的时间戳 dtype 选择这个 bq datetime dtype 值为 NULL 而不是我想要的 yyyy-mm-dd hh:mm:ss。我尝试使用 bq timestamp dtype 但它也存储日期和时间并在末尾附加 UTC。

标签: datetime google-bigquery


【解决方案1】:

该选项使用Datetime函数:

FORMAT_DATETIME(format_string, datetime_expression)

例如:

bq query --nouse_legacy_sql \
"SELECT FORMAT_DATETIME('%Y-%m-%d %H:%M:%S', '2020-01-01 13:45:55') AS datetime;"

+---------------------+
|      datetime       |
+---------------------+
| 2020-01-01 13:45:55 |
+---------------------+

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-27
    • 1970-01-01
    相关资源
    最近更新 更多