按日期排序(varchar)?
我想按日期订购。
例如
table_dateFebruary 2011
January 2011
December 2010
我已经尝试过:
SELECT distinct(table_date) FROM tables ORDER BY table_date DESC
伯,这是行不通的。
我得到这个代替:
January 2011February 2011
December 2010
你能帮我吗?
回答:
如果要按日期排序, 请将其存储为日期而不是字符串。 除非您的日期字符串的格式为yyyy-mm-dd
,否则它不会按您希望的顺序排序。
数据库可以按原样进行足够的工作,而无需人们加倍努力,因此,您应该尽可能地避免我喜欢的 SQL体操。
将其存储为日期,然后(如果需要)使用日期函数以形式获取它February 2011
。
这样会比您尝试做的要容易得多。
即使由于代码限制而 不能
更改任何当前列,也可以始终将另一列添加到数据库中,TABLE_DATE_AS_DATE
然后放入插入/更新触发器以根据进行填充TABLE-DATE
。
然后做:
update table x set table_date = table_date
或类似方法触发所有行的触发器。
然后,您的查询仍然可以获取,table_date
但可table_date_as_date
用于订购。当然这是一个麻烦,但是在过去当务之急是代码无法更改时,我不得不使用类似的技巧,因此我们不得不求助于DBMS的技巧。
以上是 按日期排序(varchar)? 的全部内容, 来源链接: utcz.com/qa/408063.html