mysql STR_TO_DATE() 函数结束字符的问题

Posted

技术标签:

【中文标题】mysql STR_TO_DATE() 函数结束字符的问题【英文标题】:issue with mysql STR_TO_DATE() function ending characters 【发布时间】:2020-12-08 21:08:30 【问题描述】:

我正在尝试使用 str_to_Date 函数来转换类似的字符串

'30/09/2010 3:33:51 p.m.' and '30/09/2010 12:00:00 a.m.'(excluding quotations) 

转换成日期时间。

但是,我无法添加最后一个字符“p.m.”或“上午”发挥作用

我试过的是

SET datecolumn = STR_TO_DATE(left(datecolumn(23), '%d/%m%Y %h:%i:%s %_.m.') 

SET datecolumn = STR_TO_DATE(left(datecolumn(18), '%d/%m%Y %h:%i:%s') 

TIA

【问题讨论】:

格式字符 %p 处理 AM 和 PM。但我不知道它是否处理上午和下午。你试过了吗? 【参考方案1】:

对于manageAM/PM 使用p%

SET datecolumn = STR_TO_DATE(left(datecolumn(23), '%d/%m%Y %h:%i:%s %p') 

https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html

https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_date-format

【讨论】:

【参考方案2】:

使用REPLACE() 删除上午/下午的点并应用正确的格式:

set datecolumn = str_to_date(
    replace(left(datecolumn, 24), '.', ''),
    '%d/%m/%Y %r'
)

我使用函数LEFT(),因为它存在于你的代码中,虽然我不知道它是否真的需要。 请参阅demo。 结果:

| date                |
| ------------------- |
| 2010-09-30 15:33:51 |
| 2010-09-30 00:00:00 |

【讨论】:

以上是关于mysql STR_TO_DATE() 函数结束字符的问题的主要内容,如果未能解决你的问题,请参考以下文章

mysql 之 str_to_date ()函数 和date_format()函数

MySql开始日期结束日期查询

MySQL STR_TO_DATE函数

MYSQL中str_to_date函数的用法

MySQL STR_TO_DATE函数

MySQL STR_TO_DATE函数