mysql得到时间戳的函数UNIX_TIMESTAMP

[ 2012-04-23 17:09:29 | 作者: admin ]
字号: | |
来自:http://hi.baidu.com/hcylz/blog/item/892141f3c29d95cc0a46e0eb.html

今天在处理时间问题时,想把时间的字段转变成unix时间戳的形式存储,以便于在比较时提高性能。而我处理这个时间字段的时候又是通过触发器来完成的,所以无法借助php的函数。由于没有用过这方面的函数所以就开始google和手册,经过一番努力找到了UNIX_TIMESTAMP,下面有这个函数的解释;本来很高兴以为大功告成了,结果在测试的时候出现了偏差,转出来的时间戳总是存在问题,仔细一看要比本地时间整整晚了8个小时,所以就想到了时区的问题,仔细一看这个函数的解释才明白人家实现相对于'1970-01-01 00:00:00' GMT 之后的秒数,而我们是GMT+8,于是就想了一个比较直接切比较笨的办法:
CREATE TRIGGER cus_info_tbl_tr AFTER INSERT ON cus_info_tbl
        FOR EACH ROW
        INSERT INTO summary_tbl ( `school_id`, `province_id`, `city_id`, `year`, `month`, `day`, `hour`, `minute`, `first_time`, `intdate` ) VALUES
        ( NEW.school_id,
        NEW.province_id,
        NEW.city_id,
        YEAR( NEW.date_call ),
        MONTH( NEW.date_call ),
        DAYOFMONTH( NEW.date_call ),
        HOUR( NEW.date_call ),
        MINUTE( NEW.date_call ),
        NEW.first_time,
        UNIX_TIMESTAMP( NEW.date_call )+28800
        );
看到了吧,在这个时间戳后面再加上8个小时的秒数就搞定了,呵呵。

不过我在google的时候注意到有很多兄弟都反应UNIX_TIMESTAMP和php中的mktime得到的值是一样的,但是我这里却出现了问题,到现在也没有能够找到原因。

UNIX_TIMESTAMP(), UNIX_TIMESTAMP(date)
若无参数调用,则返回一个Unix timestamp ('1970-01-01 00:00:00' GMT 之后的秒数) 作为无符号整数。若用date 来调用UNIX_TIMESTAMP(),它会将参数值以'1970-01-01 00:00:00' GMT后的秒数的形式返回。date 可以是一个DATE 字符串、一个 DATETIME字符串、一个 TIMESTAMP或一个当地时间的YYMMDD 或YYYMMDD格式的数字。
评论Feed 评论Feed: http://blog.xg98.com/feed.asp?q=comment&id=1821

这篇日志没有评论。

此日志不可发表评论。