将 varchar(150) 转换为 sql workbench 中的日期时间

Covert varchar(150) to datetime in sql workbench

我有一列的值“2015-02-14 12:23 AM”声明为 varchar(150),我尝试使用 to_date、转换和转换但无法更改格式.我需要这个来过滤特定的 month/year/day。感谢帮助

PS:Mysql 实例通过亚马逊 AWS 在 RDS 上 运行 - 不确定它是否相关

我建议以正确的日期数据类型存储日期。

to_date 是一个 Oracle 函数。

在MySQL中,可以用STR_TO_DATE to converts a string to date then use Date_format给出自己需要的格式

SELECT DATE_FORMAT(STR_TO_DATE(dt,'%Y-%m-%d %h:%i %p'),'%m/%Y/%d') 
from test;

Demo

您可以将子字符串与 concat 一起使用,而无需转换为日期格式:

select concat(substring(dt,6,2),'/', substring(dt,1,4),'/',substring(dt,9,2)) as my_date
from test;

Demo

SELECT CAST( SUBSTRING_INDEX( '2015-02-14 12:23 AM', 
                              ' ', 
                              2
                              ) 
             AS DATETIME
             )

returns 日期时间值。如果您需要在日期时间上下文中使用此值,则可以删除 CAST,它将隐式执行:

SELECT TIMESTAMPDIFF ( MINUTE,
                       SUBSTRING_INDEX( '2015-02-14 12:23 AM', 
                                        ' ', 
                                        2
                                        ),
                       '2015-02-14 12:34'
                       )