我有旧数据库,在这些表中,每个条目都保留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())
答案 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'))
<强>演示:强>
<强>解释强>
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)
只需使用Advertisers
或Locations
(取决于您的数据库):
substr()
然后我强烈建议您更改日期/时间的格式。确切的逻辑取决于数据库,但一般来说,您可以这样做:
substring()