.NET Core 上的 BigQuery - 插入时出错

BigQuery on .NET Core - Error on insertion

我正在使用 .NET Core 3.1 开发 Google Cloud Function,我还在 C# 上使用 BigQuery 库。

当我尝试像这样插入时:

BigQueryResults newResult = client.ExecuteQuery(
        @$"INSERT {table} 
        (deal_id,
         deal_name,
         deal_amount,
         deal_deal_stage_name,
         deal_cf_tipos_de_operao,
         deal_cf_vidas,
         deal_cf_faturamento_estimativa,
         deal_cf_vigncia_mmaaaa,
         deal_cf_agenciamento,
         deal_cf_comisso_mensal,
         deal_cf_valor_por_vida,
         deal_cf_produto,
         deal_cf_benefcios,
         deal_closed_date,
         created_at,
         updated_at)

        VALUES(
            {newRequest.deal_id},
            '{newRequest.deal_name}',
            {Convert.ToInt32(newRequest.deal_amount)},
            '{newRequest.deal_deal_stage_name}',
            '{newRequest.deal_cf_tipos_de_operao}',
            {newRequest.deal_cf_vidas},
            {newRequest.deal_cf_faturamento_estimativa},
            '{newRequest.deal_cf_vigncia_mmaaaa}',
            {newRequest.deal_cf_agenciamento},
            {newRequest.deal_cf_comisso_mensal},
            {newRequest.deal_cf_valor_por_vida},
            '{newRequest.deal_cf_produto}',
            '{newRequest.deal_cf_benefcios}',
            '{newRequest.deal_closed_date}',
            '{newRequest.created_at}',
            '{newRequest.updated_at}')",
        null)
        .ThrowOnAnyError(); 

但我收到以下错误:

The service bigquery has thrown an exception: Google.GoogleApiException: Google.Apis.Requests.RequestError
    Could not cast literal "01/01/0001 00:00:00" to type DATETIME at [27:37] [400]
    Errors [
        Message[Could not cast literal "01/01/0001 00:00:00" to type DATETIME at [27:37]] 
        Location[q - parameter] Reason[invalidQuery] Domain[global]
    ]

我不明白的是,我用来存储日期值的变量已经是 DateTime,例如 newRequest.deal_closed_date。可能格式不对?

我该怎么做才能解决这个问题?

谢谢!

发生错误是因为您将字符串中的数据插入到 BigQuery 中具有 DATETIME data type 的列。

先将您的数据从 String 转换为 DateTime 数据类型,然后再插入 BigQuery。您可以使用 DateTime.Parse() 方法执行此操作:

DateTime dateTime = DateTime.Parse(dateTimeString);