Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Làm việc với ngày trước năm 1970 trong MySQL

Kiểu DATE trong MySQL hỗ trợ phạm vi từ 1000-01-01 đến 9999-12-31, phù hợp cho ngày trước 1970 (khác với TIMESTAMP chỉ từ 1970).

Phạm vi DATE

  • Ngày nhỏ nhất: 1000-01-01
  • Ngày lớn nhất: 9999-12-31
  • Định dạng: YYYY-MM-DD

Ví dụ minh họa

Tạo bảng:

mysql> CREATE TABLE DateDemo (
    -> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> DateBefore1970 DATE
    -> );

Chèn các ngày lịch sử:

mysql> INSERT INTO DateDemo(DateBefore1970) VALUES('1000-10-20');
mysql> INSERT INTO DateDemo(DateBefore1970) VALUES('1940-12-31');
mysql> INSERT INTO DateDemo(DateBefore1970) VALUES('1500-01-25');
mysql> INSERT INTO DateDemo(DateBefore1970) VALUES('1900-04-14');
mysql> INSERT INTO DateDemo(DateBefore1970) VALUES('1710-11-15');
mysql> INSERT INTO DateDemo(DateBefore1970) VALUES('9999-12-31');
mysql> INSERT INTO DateDemo(DateBefore1970) VALUES('10000-12-31'); -- vượt phạm vi

Kết quả (ngày vượt phạm vi thành 0000-00-00):

+----+----------------+
| Id | DateBefore1970 |
+----+----------------+
|  1 | 1000-10-20     |
|  2 | 1940-12-31     |
|  3 | 1500-01-25     |
|  4 | 1900-04-14     |
|  5 | 1710-11-15     |
|  6 | 9999-12-31     |
|  7 | 0000-00-00     |
+----+----------------+

Lưu ý quan trọng:

  • Kiểu DATETIME cũng có phạm vi tương tự DATE (1000-9999)
  • Kiểu TIMESTAMP chỉ từ 1970-01-01 đến 2038-01-19 (giới hạn 32-bit)
  • Ngày 0000-00-00 là giá trị "zero date" khi dữ liệu không hợp lệ
  • Có thể dùng SQL_MODE='NO_ZERO_DATE' để từ chối giá trị này