MySQL日期格式DD / MM / YYYY选择查询?


139

我对如何按日期格式排序有些困惑。

对于格式,YYYY-MM-DD您可以这样做:...ORDER BY date DESC...

您如何订购 DD/MM/YYYY

这不起作用:

SELECT * FROM $table ORDER BY DATE_FORMAT(Date, '%Y%m%d') DESC LIMIT 14

Answers:


152

您可以STR_TO_DATE()用来将字符串转换为MySQL日期值和ORDER BY结果:

ORDER BY STR_TO_DATE(datestring, '%d/%m/%Y')

但是,明智的做法是将列转换为DATE数据类型,而不是使用字符串。


188

猜猜您可能只想格式化输出日期?那就是你所追求的

SELECT *, DATE_FORMAT(date,'%d/%m/%Y') AS niceDate 
FROM table 
ORDER BY date DESC 
LIMIT 0,14

还是您实际上想按年份前一个月的前一天排序?


1
我想要14个最新的日期/记录:)虽然数据库中的格式是“ DD / MM / YYYY”!
K-SO的毒性在增加。

数据库中的日期是实际的日期类型,还是字符串类型?
捕手2012年

2
mysql> DESCRIBE Table;并粘贴输出
trapper 2012年

DATE_FORMAT(date,'%a')将给出星期几的缩写。我用它来制作RStudio中的一些箱形图。
user208145 '19



10
SELECT DATE_FORMAT(COLUMN_NAME, "%d/%m/%Y %h:%i %p");

要么

SELECT DATE_FORMAT("2019-05-10 19:30:10", "%d/%m/%Y %h:%i %p");

输出是10/05/2019 07:30 PM




3

日期类型的ORDER BY不依赖于日期格式,日期格式仅用于显示数据库中它们是相同的数据。


格式可以用于排序(如果有人真的想要,对我来说似乎很奇怪),但是这种排序不能基于索引,因此[b]的成本很高[/ b],只有对设计好的列进行排序才能使用索引(快)和服务器优化
亚采锆石
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.