将Datetime转换为date字段以传入Google BigQuery

时间:2018-01-08 11:44:33

标签: c# google-bigquery

我正在通过我的c#Application将数据上传到BigQuery Cloud。我在BigQuery表中有专栏' ForDate'使用数据类型'日期'。

但是在c#数据类型中是' datetime'(作为c#中不支持的日期数据类型) 将数据上传到bigquery时出现以下错误: {无效日期:' 2017-01-02T00:00:00'领域:ForDate;价值:2017-01-02T00:00:00}

上传日期只有日期部分可以解决方法,忽略时间部分吗?

4 个答案:

答案 0 :(得分:2)

这对我有用:

string currentdatetime = DateTime.Now.ToUniversalTime().ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fff'Z'");

发件人:

How can I format DateTime to web UTC format?

答案 1 :(得分:0)

将所述列作为字符串导入,稍后将BigQuery解析为时间戳值。

SELECT TIMESTAMP('2017-01-02T00:00:00')

答案 2 :(得分:0)

BigQuery架构中的日期字段应标记为TimeStamp而不是DateTime字段。然后,您可以简单地用以下行插入行:

bqr.Add(attribute, date.ToUniversalTime());

答案 3 :(得分:0)

我知道问这个问题已经有一段时间了,但是对我来说,答案都不对。似乎BigQuery NuGet不喜欢指定类型(例如UTC)的日期时间,而ToUniversalTime()会产生UTC类型。

对我有用的唯一技巧是创建一个没有(Unspecified)类型的DateTime新实例。

var now = DateTime.UtcNow;
var dt = new DateTime(now.Year, now.Month, now.Day, now.Hour, now.Minute, now.Second, now.Millisecond);