I'm doing my first CSV import into MySQL and noticed that the date in the CSV has the format 31-Jan-2011
. How can I convert this to 2011-01-31
so I can place it in the DATE datatype? The first thing which came to mind is let PHP do the conversion then insert it into a 2nd table but I'm guessing that's...not right.
MySQL comes with the following data types for storing a date or a date/time value in the database: DATE - format YYYY-MM-DD. DATETIME - format: YYYY-MM-DD HH:MI:SS. TIMESTAMP - format: YYYY-MM-DD HH:MI:SS.
Change the curdate() (current date) format in MySQL The current date format is 'YYYY-mm-dd'. To change current date format, you can use date_format().
You can replace format during importing data from the CSV file, for example -
LOAD DATA INFILE 'file_name.csv' INTO TABLE table_name FIELDS TERMINATED BY ';' LINES TERMINATED BY '\n' (id, column2, column3, @date_time_variable) -- read one of the field to variable SET date_time_column = STR_TO_DATE(@date_time_variable, '%d-%b-%Y'); -- format this date-time variable
It will format the string like '31-Jan-2011' to a correct DATETIME data type.
More information here - LOAD DATA INFILE Syntax.
mysql> SELECT DATE_FORMAT('2009-10-04 22:23:00', '%Y-%m-%d'); +------------------------------------------------+ | DATE_FORMAT('2009-10-04 22:23:00', '%Y-%m-%d') | +------------------------------------------------+ | 2009-10-04 | +------------------------------------------------+ 1 row in set (0.00 sec)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With