In my order table, i have a "delivery_date" field with varchar type and all values look like this : "d/m/y at H:m"
How can i convert this field and values to a valid datetime Y-m-d H:i:s ?
In my order table, i have a "delivery_date" field with varchar type and all values look like this : "d/m/y at H:m"
How can i convert this field and values to a valid datetime Y-m-d H:i:s ?
Update your existing dates by following query.
update table_name set delivery_date = DATE_FORMAT(STR_TO_DATE(delivery_date, '%d/%m/%y HH:MM'), '%Y-%m-%d HH:MM:SS');
After your all dates has been modified by above query, you can change data type to datetime for delivery_date. And make change in your code accordingly for insering new records, updating existing records and related functionality as such we are changing date format.
SELECT STR_TO_DATE(delivery_date, '%d/%m/%Y at %H:%i') as date_value
FROM order_table
See the format here
Since you dont have seconds in your column you will get 00 as second always.
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;
Note:
But I would suggest convert all your string values to valid timestamp by an update query. And later change the data type to timestamp.
These are the steps to be followed:
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;