Is there any way to convert string to UNIX timestamp in MySQL?
For example, I have the string 2011-12-21 02:20pm
which needs to be in Unix timestamp format.
To convert a date string to a timestamp: Pass the date string to the Date() constructor. Call the getTime() method on the Date object. The getTime method returns the number of milliseconds since the Unix Epoch.
MySQL recognizes TIME values in these formats: As a string in 'D hh:mm:ss' format. You can also use one of the following “relaxed” syntaxes: 'hh:mm:ss' , 'hh:mm' , 'D hh:mm' , 'D hh' , or 'ss' .
MySQL retrieves and displays DATETIME values in ' YYYY-MM-DD hh:mm:ss ' format. The supported range is '1000-01-01 00:00:00' to '9999-12-31 23:59:59' . The TIMESTAMP data type is used for values that contain both date and time parts. TIMESTAMP has a range of '1970-01-01 00:00:01' UTC to '2038-01-19 03:14:07' UTC.
The STR_TO_DATE() function returns a date based on a string and a format.
UNIX_TIMESTAMP()
does the trick:
SELECT UNIX_TIMESTAMP('2011-12-21 14:20:00');
However, the UNIX_TIMESTAMP()
function only takes a standard MySQL formatted date. If you want to use the AM/PM notation, you will need to use STR_TO_DATE
first like this:
SELECT UNIX_TIMESTAMP( STR_TO_DATE('2011-12-21 02:20pm', '%Y-%m-%d %h:%i%p') );
Though @a'r has already given the correct answer, still something I would like to add here is that the two params STR_TO_DATE() function, 'date string' format and 'date format' string, should have matching placement of '-' and ':'.
For example following 4 queries return exact same result 2014-05-28 11:30:10
SELECT STR_TO_DATE('2014-05-28 11:30:10','%Y-%m-%d %H:%i:%s'); SELECT STR_TO_DATE('20140528 11:30:10','%Y%m%d %H:%i:%s'); SELECT STR_TO_DATE('2014-05-28 113010','%Y-%m-%d %H%i%s') ; SELECT STR_TO_DATE('20140528 113010','%Y%m%d %H%i%s');
Note: the 2 params to STR_TO_DATE() function in each query has matching placement for '-' and ':'
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