在 MySQL 查询中将字符串格式化为日期
Posted
技术标签:
【中文标题】在 MySQL 查询中将字符串格式化为日期【英文标题】:Format a string to a date in MySQL query 【发布时间】:2020-12-22 19:52:38 【问题描述】:我有一个如下图的表格,日期列是一个字符串(MMMM-yyyy)。
我想选择 ID 的最新行。对于 ID #2,最新日期为 2020 年 8 月,价格为 45.40
ID Date Price
2 August-2020 45.40
2 July-2020 42.30
我尝试了format(date, 'MMMM-yyyy) as formatted date
和STR_TO_DATE(date, '%MMMM-%yyyy')
,但无法将其转换为日期,因此我可以订购该列。我想保持这种格式的日期,我只需要为我的查询订购它。
【问题讨论】:
【参考方案1】:使用str_to_date()
将字符串转换为日期;在转换之前需要一个小技巧来使原始值成为完整的日期字符串,所以:
str_to_date(concat(date, '-01'), '%M-%Y-%d')
要在每个 id 的最新日期过滤表,您可以:
select t.*
from mytable t
where date = (
select date
from mytable t1
where t1.id = t.id
order by str_to_date(concat(date, '-01'), '%M-%Y-%d') desc
limit 1
)
【讨论】:
【参考方案2】:您需要为 mysql 设置正确的格式说明符。我希望这会起作用:
select STR_TO_DATE('August-2020', '%M-%Y')
但是,您似乎需要:
select str_to_date(concat('01-', 'August-2020'), '%d-%M-%Y')
Here 是一个 dbfiddle。
【讨论】:
以上是关于在 MySQL 查询中将字符串格式化为日期的主要内容,如果未能解决你的问题,请参考以下文章
如何在IOS中将日期格式化为字符串,如“一天前”、“分钟前”?
在 Redshift 中将日期时间列格式化为 ISO 日期时间
在MySQL数据库里面,怎么使用SQL语句查询功能把时间戳格式格式化为日期格式如:2013-02-28 6:00:00 ?