카테고리 없음

[MySQL] TIMESTAMP와 DATETIME

behonestar 2015. 5. 25. 09:47

select now() : 로컬 타임 출력

select UTC_TIMESTAMP() : UTC 타임 출력


칼럼의 TYPE이 TIMESTAMP인 경우

  • insert into TBL (ts) values (now()) → UTC로 변환되어 기록됨
  • select ts from TBL → 타임존에 따라 변환되어 출력됨


칼럼의 TYPE이 DATETIME인 경우

  • insert into TBL (ts) values (now()) → LOCAL TIME으로 기록됨
  • select ts from TBL → 타임존에 관계없이 처음에 기록되었던 시간 출력됨


mysql> CREATE TABLE `testtable` (
         `date_timestamp` TIMESTAMP NOT NULL,
         `date_datetime` DATETIME NOT NULL
       )
       ENGINE = InnoDB;
Query OK, 0 rows affected (0.06 sec)

mysql> SET time_zone = '+00:00';
Query OK, 0 rows affected (0.00 sec)

mysql> insert into testtable values(now(),now());
Query OK, 1 row affected (0.03 sec)

mysql> select * from testtable;
+---------------------+---------------------+
| date_timestamp      | date_datetime       |
+---------------------+---------------------+
| 2012-10-19 05:01:38 | 2012-10-19 05:01:38 |
+---------------------+---------------------+
1 row in set (0.00 sec)

mysql> SET time_zone = '+05:30';
Query OK, 0 rows affected (0.00 sec)

mysql>
mysql> insert into testtable values(now(),now());
Query OK, 1 row affected (0.03 sec)

mysql> select * from testtable;
+---------------------+---------------------+
| date_timestamp      | date_datetime       |
+---------------------+---------------------+
| 2012-10-19 10:31:38 | 2012-10-19 05:01:38 |
| 2012-10-19 10:31:47 | 2012-10-19 10:31:47 |
+---------------------+---------------------+
2 rows in set (0.00 sec)