所以不幸的是,我有一个VARCHAR列的日期格式如下:Jun-13-2013
(我知道这样做不正确,应该以标准格式存储在DATETIME列中)
我正在尝试获取每一行中的所有数据,并将该VARCHAR列作为DATETIME进行ORDER,但是我没有找到任何可以转换我格式不佳的日期列进行排序的内容。
这是我的查询:
$result = mysql_query("SELECT * FROM archive ORDER BY crapdates DESC");
但我正在尝试将crapdates
列转换为日期时间......这是否可能?
I'm not finding a mmm-dd-yyyy format conversion anywhere
感谢您查看
答案 0 :(得分:2)
您希望STR_TO_DATE()
函数将现有varchar列转换为日期值。
我绝对建议您创建一个新列并使用STR_TO_DATE()
将现有列中的值复制到新列中,而不是直接在STR_TO_DATE()
中使用ORDER BY
SELECT
。
UPDATE archive SET newdate = STR_TO_DATE(crapdate,'%b-%e-%Y');
如果无法更改表结构,可以对现有列进行排序,如下所示:
SELECT * FROM archive ORDER BY STR_TO_DATE(crapdate,'%b-%e-%Y') DESC;
答案 1 :(得分:1)
“您可以使用STR_TO_DATE()
将字符串转换为MySQL日期值,并ORDER BY
结果:
ORDER BY STR_TO_DATE(datestring, '%d/%m/%Y')
但是,最好将列转换为DATE
数据类型,而不是使用字符串。“
答案 2 :(得分:0)
我尝试了 str_to_date 但它没有返回想要的结果然后我找到了这个代码,但在我的情况下日期是这种格式 03/15/2021
ORDER BY SUBSTR(crapdates, 7) DESC, ORDER BY SUBSTR(crapdates, 1,2) DESC,ORDER BY SUBSTR(crapdates, 4,2) DESC
它会返回你想要的排序。