我正在将数据从 csv 文件上传到 bigquery 表。来自 csv 的每条记录都包含日期时间字段值,我将这些值作为字符串存储到 BigQuery 表字段中。当我查询这些日期时间字段以获得所需的范围(如 dateField > '2013-01-01 00:00:00' 和 dateField < '2013-01-10 00:00:00')时,我得到错误的结果。
我尝试使用 TimeStamp 函数,但没有运气。请帮帮我。
我正在将数据从 csv 文件上传到 bigquery 表。来自 csv 的每条记录都包含日期时间字段值,我将这些值作为字符串存储到 BigQuery 表字段中。当我查询这些日期时间字段以获得所需的范围(如 dateField > '2013-01-01 00:00:00' 和 dateField < '2013-01-10 00:00:00')时,我得到错误的结果。
我尝试使用 TimeStamp 函数,但没有运气。请帮帮我。
我解决了问题:-
当我使用 datetime(YYYY-MM-DD HH:MM:SS) 值生成 csv 文件时,我使用 C# 的代码块将此值转换为 POSIX 值(UNIX 时间戳):-
protected string convertDateTimeToPOSIX(string strDateTime)
{
string strPOSIX = "";
DateTime dtmDateTime = DateTime.Parse(strDateTime);
DateTime dtmEpoch = new DateTime(1970, 1, 1, 0, 0, 0, 0);
TimeSpan objTSpan = (dtmDateTime - dtmEpoch);
strPOSIX = objTSpan.TotalSeconds.ToString();
return strPOSIX + "000000";
}
所以例如。如果 strDateTime = "16-03-2011 23:51:17" 那么它的 POSIX 值将变为 "1300319477000000"
文件上传后,我使用 Web 界面查询 Big Query:-
SELECT Col1, Col2, Col3, FORMAT_UTC_USEC(POSIX_DateTime) DATE FROM [Dataset.tableName]
WHERE POSIX_DateTime > PARSE_UTC_USEC('2013-01-01 00:00:00') AND POSIX_DateTime < PARSE_UTC_USEC('2013-01-11 00:00:00')
ORDER BY DATE