如何在SQL中将字符串日期转换为datetime类型

时间:2018-04-25 09:44:25

标签: php sql

我有旧数据库,在这些表中,每个条目都保留create_at个abd updated_at条目,

但是这些条目是varchar格式,例如:24/04/2018 14:25:29 pm

如何将此转换为datetime,以便我可以触发查询并获取每个月的记录数。

查询将是这样的:

SELECT *
FROM table
WHERE MONTH(columnName) = MONTH(CURRENT_DATE())
AND YEAR(columnName) = YEAR(CURRENT_DATE())   

2 个答案:

答案 0 :(得分:0)

<强> MySQL的:

使用STR_TO_DATE功能转换为datetime

像这样:

SELECT *
FROM table
WHERE MONTH(STR_TO_DATE(columnName,'%d%m%Y')) = MONTH(STR_TO_DATE(columnName,'%d%m%Y'))
AND YEAR(STR_TO_DATE(columnName,'%d%m%Y')) = YEAR(STR_TO_DATE(columnName,'%d%m%Y')) 

<强>演示:

  

http://sqlfiddle.com/#!9/94c4b/26

<强>解释

STR_TO_DATE

语法: STR_TO_DATE(str,format)

它采用字符串str和格式字符串格式  如果格式字符串包含日期和时间部分,则STR_TO_DATE()返回DATETIME值;如果字符串仅包含日期或时间部分,则{D}或TIME值返回{0}}。
如果从str中提取的日期,时间或日期时间值是非法的,STR_TO_DATE()将返回NULL并发出警告。

格式的说明符:

%d - 月中的某天,数字(00..31)
%m - 月份,数字(00..12)
%Y - 年份,数字,四位数 %T - 时间,24小时(hh:mm:ss)

链接到来源:

  

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

     

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

答案 1 :(得分:0)

只需使用AdvertisersLocations(取决于您的数据库):

substr()

然后我强烈建议您更改日期/时间的格式。确切的逻辑取决于数据库,但一般来说,您可以这样做:

substring()