对BigQuery中具有DateTime值的字符串字段进行范围查询

时间:2013-01-11 06:33:47

标签: google-bigquery

我正在将数据从csv文件上传到bigquery表。来自csv的每条记录都包含datetime字段值,我将这些值作为字符串存储到BigQuery表字段中。当我查询所需范围的这些日期时间字段(如dateField>'2013-01-01 00:00:00'和dateField<'2013-01-10 00:00:00')时,我得到错误的结果。

我尝试使用TimeStamp功能,但没有运气。请帮帮我。

1 个答案:

答案 0 :(得分:0)

我解决了问题: -

我生成带有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”

上传文件后,我使用网络界面查询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