Home > Software engineering >  MySQL - Convert string with timezone into Date
MySQL - Convert string with timezone into Date

Time:11-18

I would like to convert strings such as "Tue, 15 May 2012 17:26:44 EST" into UTC dates, so that I can then convert them into UNIX timestamps.

I tried the following but can't see a parameter for timezones in the MySQL documentation

SELECT STR_TO_DATE("Tue, 15 May 2012 17:26:44 EST", "%a, %d-%b-%Y %T");

I think I can also use COVERT_TZ() but the records could be any timezone so I'm not sure how to to determine the parameters.

CodePudding user response:

Using CONVERT_TZ you can get the last word from your string (which hopefully is always the time zone) and convert it to UTC:

SELECT 
  CONVERT_TZ(
    /*date:*/
    STR_TO_DATE('Tue, 15 May 2012 17:26:44 EST', '%a, %d %b %Y %T'),
    /*from_tz: select the last word, EST in this case:*/
    SUBSTRING_INDEX(TRIM('Tue, 15 May 2012 17:26:44 EST'), ' ', -1),
    /*to_tz:*/
    'UTC') 

CodePudding user response:

An alternative to VvdL answer:

select
  convert_tz(str_to_date(left(my_date, length(my_date) - 3),
             "%a, %d %b %Y %T"), right(my_date, 3), 'UTC')
             as new_date
from dates;

All you need is to do string manipulation, which you can do in many ways. The freaking " took my time to notice.

Fiddle: https://www.db-fiddle.com/f/2fH64kfq78D2f1aBekqRKQ/0

  • Related