我有一个mysql"用户"像这个例子的表:
id | user | created
100 | user001 | [27-01-2016 04:30 PM]
101 | user005 | [19-05-2017 09:28 AM]
102 | user019 | [09-10-2015 03:29 PM]
103 | user029 | [18-11-2017 05:40 PM]
我想通过这样创建的行按降序获取此表:
id | user | created
103 | user029 | [18-11-2017 05:40 PM]
101 | user005 | [19-05-2017 09:28 AM]
100 | user001 | [27-01-2016 04:30 PM]
102 | user019 | [09-10-2015 03:29 PM]
我尝试了DATE_FORMAT:
SELECT id,user,DATE_FORMAT(created,"%d %m %Y") AS created FROM users ORDER by created desc
但它没有显示,我怎么能得到它?
我想要一些帮助。
答案 0 :(得分:2)
这有效:
SELECT `id`, `user`, DATE_FORMAT(STR_TO_DATE(MID(`created`, 2, 19), '%d-%m-%Y %h:%i %p'), '%d-%m-%Y %h:%i %p')
AS `created:` FROM `users` ORDER BY STR_TO_DATE(`created:`,'%d-%m-%Y %h:%i %p') DESC
这是一个有效的SQL Fiddle。
<强>解释强>
MID()
MySQL函数返回字符串的中间部分,因此我们很容易删除[]
。之后,STR_TO_DATE()
函数将返回的string
解析为DATETIME
格式(%p
用于AM/PM
)。返回值格式不正确,至少不是您想要的方式。然后我们使用DATE_FORMAT()
格式化输出。最后,我们再次使用STR_TO_DATE()
进行排序,因为created:
作为string
返回。
我还将您的created
输出列更改为created:
,因为如果它们的名称相同,则无效。
答案 1 :(得分:0)
您的<script src="https://unpkg.com/vue/dist/vue.js"></script>
<div id="app">
<select style="width: 175px" v-model="selectedLabel">
<option value="">None</option>
<option v-for="label in labels" :value="label.value">{{label.description}}</option>
</select>
</div>
日期格式不正确,您应该更改表并将字段从varchar / char(字符串)更改为created
类型。我已经尝试使用&#39; STR_TO_DATE()&#39;转换您的字符串日期。但它返回timestamp
,因为格式不匹配null
,timestamp
或date
格式。将日期/日期时间存储为time
或date
数据类型始终是最佳做法。您可以随后在查询中应用格式化函数,以将日期输出为任何所需的格式。