【发布时间】:2012-05-03 06:41:00
【问题描述】:
例如,我的表post 上有一个名为date 的列,我想在ascending 中对其进行排序。
在我的date 列上,我用RCF112 格式填充它,例如:Sun, 22 APR 2012 5:21:22。
首先我从这个命令开始:
SELECT *
FROM post
ORDER BY date ASC
但结果似乎不正确,因为它是根据其字符串排序的,例如。 Sun, 15 APR 2012 将比 Wed,11 APR 2012 更早,因为“Sun”以字母“W”前面的“S”开头,因此“Sun, 15 APR 2012”首先出现。
如何纠正这个命令?
【问题讨论】:
-
date列的数据类型是什么? -
@sarwar026:我用的是varchar,是不是不对?
-
是的,它应该是 DATETIME 数据类型。请试一试,然后再检查。
-
我已经使用了 DATETIME 数据类型。但问题是,每次插入数据时都会出错。 "警告:#1264 第 1 行的列 'date' 的值超出范围"
-
该错误意味着您正在插入格式错误的数据——MySQL 的 DATETIME 列期望的格式是
YYYY-MM-DD HH:MM:SS。因此,在插入时将您的数据转换为该格式,然后对其进行排序即可。
标签: mysql sql date format sql-order-by