Steven
Steven

Reputation: 13975

Mysql Unix Timestamp Store?

I got a bit of a problem here. My database stores unix timestamps as a string 2011-09-01 20:22:36 and I need it as a Unix Timestamp ########### so I can compare it using a > then symbol. But I also need to have it automatically set the timestamp on update (ON UPDATE CURRENT TIMESTAMP) as well as have a default of the timestamp which is not really that important cause I can do that in PHP if I need to.

How can I do this? timestamp is now a date/time combo string and not a integre so I cannot compare it?

My comparison string is

$sql = sprintf("SELECT nid, field_date_value, field_movie_location_value FROM content_type_mobile_event WHERE updated<'%s'", $vid);

Incase anyone is wondering.

Upvotes: 0

Views: 3085

Answers (2)

Vincent Savard
Vincent Savard

Reputation: 35927

You can compare DATETIME columns with operators like > or <, so I don't see what the problem is. For example, you can do this :

SELECT *
  FROM table
 WHERE your_column > NOW() - INTERVAL 2 HOUR;

If you really need unix timestamps (you shouldn't, it's a bad habit PHP users have), you can use the function UNIX_TIMESTAMP :

SELECT UNIX_TIMESTAMP(your_col)
  FROM table;

You can also use FROM_UNIXTIME to convert a unix timestamp to a valid date :

SELECT *
  FROM table
 WHERE your_column > FROM_UNIXTIME($data)

This is what I would use if I really had to use a unix timestamp, but most of the time, you can do without.

Upvotes: 2

Michael Berkowski
Michael Berkowski

Reputation: 270617

Use the UNIX_TIMESTAMP() function to convert it inside your query. If you must compare it to a Unix timestamp from PHP, it is easiest to allow MySQL to handle the column's conversion on its end.

$sql = sprintf("SELECT nid, othercols FROM content_type_mobile_event WHERE UNIX_TIMESTAMP(updated) < '%s'", $vid);

Upvotes: 2

Related Questions