如何ASC DESC日期哪个数据类型是varchar

时间:2017-04-24 06:58:53

标签: php mysql sql

我怎么能约会? 我在sql中有以下内容

2014-3-18
2014-1-15
2014-3-20
2015-3-18

我尝试了ff代码,但它只是在我的数据库中给出了错误。 是的,列的数据类型是varchar。 此列中还有NULL值。

SELECT * 
FROM `locate` 
ORDER BY 
   CONVERT(DateTime, `Date`,101)  DESC

请帮忙。谢谢! :)

3 个答案:

答案 0 :(得分:1)

看起来您使用的是mysql,因此无法使用 Cursor call = classObject.getCarEntry(username, Day, Type); int distance = call .getInt(carCursor.getColumnIndex("DISTANCE")); int time = call .getInt(carCursor.getColumnIndex("TIME")); mssql功能。你必须使用convert

STR_TO_DATE

有关详细信息,请参阅documentation

答案 1 :(得分:0)

通过这种方式使用订单:

TypeTag

如果有效,请告诉我。

答案 2 :(得分:0)

我猜 EventDate 是一个char或varchar而不是一个日期,否则你的order by子句会没问题。

您可以使用CONVERT将值更改为日期并按该

排序
SELECT * 
FROM 
     vw_view 
ORDER BY 
   CONVERT(DateTime, EventDate,101)  DESC

问题是,正如Sparky在评论中指出的那样,如果EventDate的值无法转换为日期,则查询将不会执行。

这意味着您应该排除坏行或让坏行转到结果的底部

要排除坏行,只需添加 WHERE IsDate(EventDate)= 1

要让糟糕的日期到底,您需要使用 CASE

e.g。

ORDER BY 
    CASE
       WHEN IsDate(EventDate) = 1 THEN CONVERT(DateTime, EventDate,101)
       ELSE null
    END DESC