【问题标题】:How do I insert a row in bigquery with a column of type DATE如何在 bigquery 中插入一行 DATE 类型的列
【发布时间】:2021-04-04 15:08:48
【问题描述】:

昨天刚开始使用 BigQuery 和 SQL,所以我对它还很陌生,我不知道如何正确地做到这一点。

我收到以下错误:

无法将文字 '"2020-12-27"' 转换为类型 DATE

这是我的代码:

dateNow = datetime.now().strftime('%Y-%m-%d')

# connect to bigquery
client = bigquery.Client()
table_id = "xxxxx"
table = client.get_table(table_id)

# write to loans
query = "INSERT INTO `xxxxx` (username,id,date) VALUES ('\"{}\"','\"{}\"','\"{}\"')".format(username, id, dateNow)
query_job = client.query(query)
results = query_job.result()

【问题讨论】:

  • 也许this的回答可以帮到你

标签: python sql json database google-bigquery


【解决方案1】:

搞砸了一段时间后,它开始工作了:

query = "INSERT INTO xxx (username,id,date) VALUES ('"{}"','"{}"',CURRENT_DATE())".format(username, id)

【讨论】:

    【解决方案2】:

    你得到的错误意味着你试图插入字符串文字,它不能转换为 DATE 类型的表达式。原因是单引号内多了两个双引号。

    迄今为止的字符串隐式强制转换规则在documentation 中描述如下:

    当在需要 DATE 类型表达式的地方使用时,规范日期格式的字符串文字也会隐式强制转换为 DATE 类型。

    我会通过删除日期文字周围的双引号来修复您的代码。注意 INSERT 语句字符串中没有双引号的第三个大括号。

    dateNow = datetime.now().strftime('%Y-%m-%d')
    # connect to bigquery
    client = bigquery.Client()
    table_id = "xxxxx"
    table = client.get_table(table_id)
    
    # write to loans
    query = "INSERT INTO `xxxxx` (username,id,date) VALUES ('\"{}\"','\"{}\"','{}')".format(username, id, dateNow)
    query_job = client.query(query)
    results = query_job.result()
    

    或者您可以随时使用函数PARSE_DATE,它可以帮助您以您指定的格式将字符串文字解析为日期。但我相信这不是你的情况,因为你已经有了正确格式的日期。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-13
      • 1970-01-01
      • 2017-01-10
      • 2014-08-12
      • 1970-01-01
      • 2014-06-30
      • 1970-01-01
      相关资源
      最近更新 更多