Unix时间戳(Unix timestamp),或称Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间1970年01月01日
00时00分00秒起至现在的总秒数。
php设置时区(默认为格林尼治时区):
date_default_timezone_set('Asia/Shanghai');//'Asia/Shanghai' 亚洲/上海
date_default_timezone_set('Asia/Chongqing');//其中Asia/Chongqing'为“亚洲/重庆”
date_default_timezone_set('PRC');//其中PRC为“中华人民共和国”
date_default_timezone_set("Etc/GMT")//GMT时区
php.ini配置文件的date.timezone
php的time()函数不管设置的时区是什么,返回的都是相同的unix时间戳
date("Y-m-d H:i:s", time())此函数受时区影响,返回所在时区的当前时间
strtotime("2011-03-28 11:02:55")受时区影响,先计算出参数对应的格林尼治时间,然后以此格林尼治时间的时间戳作为返回值
===============================================================================================
mysql设置时区(默认为使用系统所在时区):
php函数:mysql_query("SET time_zone = '+8:00'")
my.cnf:default-time-zone = '+8:00'
dos:set time_zone = '+8:00';
mysql时间比较的问题:unix_timestamp()返回当前时间戳,也可以是unix_timestamp(field),其中字段field不能加引号,或者是
unix_timestamp("2011-03-28 14:11:48"); 或者是unix_timestamp("$php_variable");
unix_timestamp()函数是不会随时区的不同而改变的。返回值跟php的time()函数一样
unix_timestamp("2011-03-28 16:36:48")函数会随时区改变,返回值跟php的strtotime("2011-03-28 16:36:48")函数一样
now()函数是会随时区的设定而改变的,返回值跟php的date("Y-m-d H:i:s", time())函数一样
以下数据是我在深圳时间2011-03-28 16:17:19所做的测试:
mysql> set time_zone='+0:00';
Query OK, 0 rows affected (0.00 sec)
mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2011-03-28 08:17:19 |
+---------------------+
1 row in set (0.00 sec)
以下数据说明设置不同的时区,unix_timestamp()返回相同的值,unix_timestamp("2011-03-28 16:36:48")返回不同的值
mysql> set time_zone='+0:00';
Query OK, 0 rows affected (0.00 sec)
mysql> select unix_timestamp("2011-03-28 16:36:48");
+---------------------------------------+
| unix_timestamp("2011-03-28 16:36:48") |
+---------------------------------------+
| 1301330208 |
+---------------------------------------+
1 row in set (0.00 sec)
mysql> select unix_timestamp();
+------------------+
| unix_timestamp() |
+------------------+
| 1301301748 |
+------------------+
1 row in set (0.00 sec)
mysql> set time_zone='+8:00';
Query OK, 0 rows affected (0.00 sec)
mysql> select unix_timestamp("2011-03-28 16:36:48");
+---------------------------------------+
| unix_timestamp("2011-03-28 16:36:48") |
+---------------------------------------+
| 1301301408 |
+---------------------------------------+
1 row in set (0.00 sec)
mysql> select unix_timestamp();
+------------------+
| unix_timestamp() |
+------------------+
| 1301301780 |
+------------------+
1 row in set (0.00 sec)