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开发者_StackOverflow社区 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.
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);
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.
精彩评论