source

MySQL 필드 DATETIME이 ISO8601을 잘라냅니다.

itover 2023. 1. 25. 08:33
반응형

MySQL 필드 DATETIME이 ISO8601을 잘라냅니다.

MySQL/MariaDB 테이블 생성:

CREATE TABLE `testTable` (
  `id` int(11) NOT NULL,
  `timeinfo` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

ISO8601의 완전한 값을 다음과 같이 삽입합니다.

MariaDB [test]> INSERT INTO testTable VALUES (1, '2500-12-31T00:00:00.000Z');
Query OK, 1 row affected, 1 warning (0.00 sec)

MariaDB [test]> show warnings;
+---------+------+-----------------------------------------------+
| Level   | Code | Message                                       |
+---------+------+-----------------------------------------------+
| Warning | 1265 | Data truncated for column 'timeinfo' at row 1 |
+---------+------+-----------------------------------------------+
1 row in set (0.00 sec)

MariaDB [test]> select * from testTable;
+----+---------------------+
| id | timeinfo            |
+----+---------------------+
|  1 | 2500-12-31 00:00:00 |
+----+---------------------+
1 row in set (0.01 sec)

ZULU TimeZone에서와 같이 "Z"가 잘리는 것을 정확히 알 수 없습니다.


MySQL/MariaDB 필드 타입에 정보를 완전히 저장할 수 있습니까?

그렇다면 어떤 필드 데이터 유형을 사용해야 합니까?

'Z'는 특별한 시간대 지정자입니다.이는 "시간이 UTC 시간대입니다"를 의미합니다.

MySQL 5.7 datetime 및 timestamp 유형은 시간대 정보를 저장할 수 없습니다.MySQL은 "Z"를 이해하지 못합니다.

표준 시간대를 저장해야 할 경우 추가 필드를 사용합니다.

데이터베이스는 다른 입력을 예상하므로 경고가 표시됩니다.

MySQL DATETIME에서는 다음 형식이 필요합니다.

DATETIME - 형식:YYY-MM-DD HH:MI: SS

이렇게 해도 경고는 발생하지 않습니다.

INSERT INTO testTable VALUES (, '2500-12-31 00:00:00');

경고에도 불구하고 데이터베이스에 기록이 가득 차게 됩니다.

언급URL : https://stackoverflow.com/questions/45817809/mysql-field-datetime-truncates-iso8601

반응형