Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

String to timestamp in MySQL

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.

like image 221
AvMishra Avatar asked Dec 21 '11 08:12

AvMishra


People also ask

Can we convert string to TIMESTAMP?

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.

Is MySQL TIMESTAMP a string?

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' .

How do I create a TIMESTAMP in MySQL?

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.

What is STR_TO_DATE in MySQL?

The STR_TO_DATE() function returns a date based on a string and a format.


2 Answers

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') ); 
like image 62
a'r Avatar answered Oct 12 '22 15:10

a'r


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 ':'

like image 22
sactiw Avatar answered Oct 12 '22 16:10

sactiw