使用Google BigQuery在SQL中订购日期(dd-mm-yyyy)

时间:2012-07-23 09:11:57

标签: sql google-bigquery

我有一个返回日期类别的查询:

SELECT Date, Value, Category FROM MyTable

输出:

18-Dec-2011 ||  6 || Toys   
01-Apr-2012 || -4 || Dog Collars
31-May-2012 ||  4 || Cat
17-Dec-2011 ||  3 || Health & Hygiene    
12-Dec-2011 ||  3 || Travel & Training   

当我添加Order By Date ASC时,它会根据 日期 而不是年份按升序排列日期。

我希望它看起来像这样:

12-Dec-2011 ||  3 || Travel & Training 
17-Dec-2011 ||  3 || Health & Hygiene
18-Dec-2011 ||  6 || Toys
01-Apr-2012 || -4 || Dog
31-May-2012 ||  4 || Cat

注意: Date的类型为string。我正在使用

如何以升序排列年份,然后是月份,然后是日期?

3 个答案:

答案 0 :(得分:4)

更新:如下面的FH所示," BigQuery现在有一个时间戳类型:developers.google.com/bigquery/timestamp"

BigQuery当前没有Date或DateTime数据类型。您还可以将日期戳存储在BigQuery中作为POSIX (UNIX epoch) date format中的整数,并使用{{{}}将它们转换为人类可读时间3}}

另一种方法是将日期戳存储为YYYY-MM-DD HH:MM:SS.uuuuuu格式的字符串,使用PARSE_UTC_USEC()函数将它们转换为有序查询。

答案 1 :(得分:2)

将日期转换为日期格式ISO 9000样式yyyy-mm-dd然后对其进行排序(如果您想保留其他日期格式以进行渲染,可能在新的单独列中)。

答案 2 :(得分:-3)

SQL Server,MySQL

Order By CAST(Date AS DATETIME) ASC

ORACLE

Order By TO_DATE(Date,'DD-Mon-YYYY') ASC