2016-07-30 75 views
1

在我的订单表,我有VARCHAR类型“DELIVERY_DATE”字段和所有值是这样的: “d/M /为H Y:M”MySQL的字符串转换为DATETIME

哪有我将此字段和值转换为有效的日期时间Ymd H:i:s?

+0

您应该必须为日期时间为您的字段提供数据类型。 而在此之前,您可以将所有现有日期转换为有效的日期格式“Y-m-d H:i:s” –

+0

好的,我如何处理STR_TO_DATE的转换? – AniZ

+0

DATE_FORMAT(STR_TO_DATE(delivery_date,'%d /%m /%y HH:MM'),'%Y-%m-%d HH:MM:SS') –

回答

2
SELECT STR_TO_DATE(delivery_date, '%d/%m/%Y at %H:%i') as date_value 
FROM order_table 

format here

0

您可以使用MySQL的STR_TO_DATE功能,或者您可以使用PHP的strtotime功能可按。

strtotime(date('Y-m-d H:i:s')); 
0

因为你没有在列秒钟你会得到00作为第二一如既往。

SELECT 
DATE_FORMAT(STR_TO_DATE(delivery_date, '%d/%m/%y at %H:%i'),'%Y-%m-%d %H:%i:%s') as dt 
FROM your_table; 

注:

但我建议你通过更新查询您的所有字符串值,以有效timestamp转换。稍后将数据类型更改为timestamp

这些都是要遵循以下步骤:

UPDATE your_table SET delivery_date = 
    DATE_FORMAT(STR_TO_DATE(delivery_date, '%d/%m/%y at %H:%i'),'%Y-%m-%d %H:%i:%s'); 

ALTER TABLE your_table MODIFY delivery_date timestamp;

1

更新通过以下查询现有的日期。

update table_name set delivery_date = DATE_FORMAT(STR_TO_DATE(delivery_date, '%d/%m/%y HH:MM'), '%Y-%m-%d HH:MM:SS'); 

在上述查询修改了所有日期之后,您可以将数据类型更改为date_time,以用于delivery_date。并相应地更改您的代码以便插入新记录,更新现有记录和相关功能,因此我们正在更改日期格式。

+0

它的工作原理,谢谢:-) – AniZ