无法在 MySQL 查询中将字符串转换为日期时间

Posted

技术标签:

【中文标题】无法在 MySQL 查询中将字符串转换为日期时间【英文标题】:Unable to convert string to date time in MySQL query 【发布时间】:2014-08-08 06:52:34 【问题描述】:

我正在处理一个项目,其中有两个表 - 一个是 tbllessontopic,它保存独特的课程计划,另一个表 tbllessonperiodallocation,它保存将教授课程计划的日期。现在我已经应用查询来获取所有日期使用 group_concat() 函数在一个名为日期的列中的特定课程计划。现在我正在尝试按升序排列此列中的日期,我在 tbllessonperiodallocation 中的列日期是 var char 类型,因此在尝试将其转换为日期时间格式我收到错误的日期时间值错误。请建议我如何实现这一点。

查询

select l.id,l.topic,l.dateallocated,l.noofperiods,s.subjectname,c.classname,
group_concat(p.date order by DATE_FORMAT(STR_TO_DATE(p.date, '%d %m %Y'), '%Y-%m-%d') asc)  as date from tbllessontopic l
join tbllessonperiodallocation p on p.lessontopicid=l.id
join tblclass c on c.classcode=l.classcode
join tblsubject s on s.sshortname=l.subject group by p.lessontopicid

输出

如果可能的话,除了这个问题之外,我想将日期列中的第一个日期与今天的日期进行比较,并想找出今天或今天之后的记录,例如我的第一行是 2013 年 8 月 27 日,2013 年 11 月 7 日, 2014 年 5 月 5 日现在我想将 2013 年 8 月 27 日与今天的日期匹配

【问题讨论】:

为什么要同时使用 Date_format 和 str_to_date 函数 因为我在某处看到将字符串转换为日期时间,所以我们必须像在上面的查询中那样做 【参考方案1】:

Q1) 尝试将 %m "月份,数字 (00-12)" 更改为 %M "月份名称"。 Q2)GROUP_CONCAT ORDER BY

【讨论】:

thanx 它解决了我不正确的日期时间问题,我已经使用了 order by。请帮我解决第二部分,我可以将第一个日期与今天的日期匹配

以上是关于无法在 MySQL 查询中将字符串转换为日期时间的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MySQL 中将字符串转换为日期?

在 Impala 中将 YYYYMMDD 字符串转换为日期

如何在python中将字符串转换为日期时间[重复]

在 MySQL 查询中将字符串格式化为日期

无法在 Swift 中将日期转换为特定格式

如何在 SQL Server 中将字符串转换为日期时间?