开发者

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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜