Nếu bạn đã từng làm việc với MySQL và phải tạo cấu trúc bảng của mình, bạn có thể nhận thấy rằng kiểu dữ liệu
INSERT INTO demo_table VALUES [[NOW[]],[NOW[]]];
1 và INSERT INTO demo_table VALUES [[NOW[]],[NOW[]]];
2 thoạt nhìn khá giống nhau vì chúng có rất nhiều điểm tương đồng.Trong hướng dẫn này, chúng tôi sẽ xem xét từng loại và tìm hiểu sự khác biệt chính giữa cả hai để bạn có thể biết khi nào nên sử dụng chúng.
https. // stackoverflow. com/câu hỏi/409286/nên-tôi-sử-dụng-thời-thời-gian-hoặc-dấu-thời-gian-dữ-liệu-loại-trong-mysql
INSERT INTO demo_table VALUES [[NOW[]],[NOW[]]];
1
INSERT INTO demo_table VALUES [[NOW[]],[NOW[]]];
Loại
INSERT INTO demo_table VALUES [[NOW[]],[NOW[]]];
1 được sử dụng cho các giá trị chứa cả ngày và giờVí dụ khi lấy giá trị về thì MySQL sẽ hiển thị theo dạng sau.
INSERT INTO demo_table VALUES [[NOW[]],[NOW[]]];
1Một điểm khác biệt quan trọng là phạm vi hiện được hỗ trợ là
INSERT INTO demo_table VALUES [[NOW[]],[NOW[]]];
2 đến INSERT INTO demo_table VALUES [[NOW[]],[NOW[]]];
3Bạn có thể coi
INSERT INTO demo_table VALUES [[NOW[]],[NOW[]]];
1 là một giá trị theo nghĩa đen, vì nó lưu trữ ngày và giờ nhưng không có tham chiếu đến một múi giờ cụ thể. Vì vậy, khi bạn lưu trữ giá trị của INSERT INTO demo_table VALUES [[NOW[]],[NOW[]]];
5 chẳng hạn, múi giờ của máy chủ sẽ được sử dụng. Sau khi được chèn, giá trị của INSERT INTO demo_table VALUES [[NOW[]],[NOW[]]];
1 sẽ giữ nguyên bất kể bất kỳ phiên hiện tại nàoĐây là một sự khác biệt quan trọng sẽ rõ ràng hơn một chút khi bạn xem qua ví dụ bên dưới
INSERT INTO demo_table VALUES [[NOW[]],[NOW[]]];
2
INSERT INTO demo_table VALUES [[NOW[]],[NOW[]]];
Giống như
INSERT INTO demo_table VALUES [[NOW[]],[NOW[]]];
1, kiểu dữ liệu INSERT INTO demo_table VALUES [[NOW[]],[NOW[]]];
2 chứa cả ngày và giờ ở định dạng sau INSERT INTO demo_table VALUES [[NOW[]],[NOW[]]];
1🤩 Nhà tài trợ tuyệt vời của chúng tôi 👇
Tuy nhiên, không giống như
INSERT INTO demo_table VALUES [[NOW[]],[NOW[]]];
1, loại dữ liệu INSERT INTO demo_table VALUES [[NOW[]],[NOW[]]];
2 có phạm vi cố định trong khoảng từ SELECT * FROM demo_table;
// Output
+---------------------+---------------------+
| datetime_column | timestamp_column |
+---------------------+---------------------+
| 2021-12-04 17:42:16 | 2021-12-04 17:42:16 |
+---------------------+---------------------+
3 UTC đến SELECT * FROM demo_table;
// Output
+---------------------+---------------------+
| datetime_column | timestamp_column |
+---------------------+---------------------+
| 2021-12-04 17:42:16 | 2021-12-04 17:42:16 |
+---------------------+---------------------+
4 UTC. Bạn phải luôn xem xét giới hạn này vì giới hạn này có thể không phù hợp với mọi ứng dụng và trường hợp sử dụng. Để biết thêm thông tin về lý do tại sao phạm vi cụ thể này, hãy đảm bảo đọc thêm về Thời gian UnixMột điều quan trọng cần lưu ý là khi bạn hiển thị các giá trị của cột
INSERT INTO demo_table VALUES [[NOW[]],[NOW[]]];
2, chúng sẽ được chuyển đổi thành múi giờ hiện tại. Điều xảy ra là MySQL sẽ chuyển đổi các giá trị INSERT INTO demo_table VALUES [[NOW[]],[NOW[]]];
2 từ múi giờ hiện tại thành SELECT * FROM demo_table;
// Output
+---------------------+---------------------+
| datetime_column | timestamp_column |
+---------------------+---------------------+
| 2021-12-04 17:42:16 | 2021-12-04 17:42:16 |
+---------------------+---------------------+
7 khi lưu trữ chúng, nhưng sau đó nó sẽ chuyển đổi các giá trị ngược lại từ UTC sang múi giờ hiện tại của truy xuấtHãy xem qua ví dụ sau để làm cho điều này rõ ràng hơn một chút
Ví dụ
Hãy tạo một bảng rất đơn giản chỉ với hai cột cho mỗi một trong hai kiểu dữ liệu
________số 8Sau đó, hãy chèn các giá trị giống nhau vào cả hai bằng cách sử dụng
INSERT INTO demo_table VALUES [[NOW[]],[NOW[]]];
5INSERT INTO demo_table VALUES [[NOW[]],[NOW[]]];
Sau đó kiểm tra các giá trị của cả hai cột
SELECT * FROM demo_table;
// Output
+---------------------+---------------------+
| datetime_column | timestamp_column |
+---------------------+---------------------+
| 2021-12-04 17:42:16 | 2021-12-04 17:42:16 |
+---------------------+---------------------+
Cho đến nay các giá trị của cả hai cột đều giống nhau. Nhưng sau đó hãy kiểm tra múi giờ hiện tại
INSERT INTO demo_table VALUES [[NOW[]],[NOW[]]];
2Tiếp theo, hãy thay đổi múi giờ cho phiên làm việc hiện tại của chúng ta
INSERT INTO demo_table VALUES [[NOW[]],[NOW[]]];
3Ghi chú. nếu bạn gặp lỗi sau.
SELECT * FROM demo_table;
// Output
+---------------------+---------------------+
| datetime_column | timestamp_column |
+---------------------+---------------------+
| 2021-12-04 17:42:16 | 2021-12-04 17:42:16 |
+---------------------+---------------------+
9 bạn có thể chạy lệnh sau trong một cửa sổ đầu cuối khácINSERT INTO demo_table VALUES [[NOW[]],[NOW[]]];
5Sau đó, hãy xem các giá trị đầu ra thay đổi như thế nào
INSERT INTO demo_table VALUES [[NOW[]],[NOW[]]];
6Như bạn có thể thấy, giá trị hiển thị của
INSERT INTO demo_table VALUES [[NOW[]],[NOW[]]];
20 vẫn giữ nguyên nhưng giá trị INSERT INTO demo_table VALUES [[NOW[]],[NOW[]]];
21 đã thay đổi và hiện đang tham chiếu múi giờ hiện tại của chúng tôiPhần kết luận
Đây là tất cả. Bây giờ bạn nên hiểu rõ hơn về sự khác biệt chính giữa
INSERT INTO demo_table VALUES [[NOW[]],[NOW[]]];
22 và INSERT INTO demo_table VALUES [[NOW[]],[NOW[]]];
23 là gìTrong trường hợp bạn muốn tìm hiểu thêm về SQL nói chung, tôi khuyên bạn nên sử dụng Sách điện tử miễn phí sau đây
- Giới thiệu về Sách điện tử mã nguồn mở SQL
Trong trường hợp bạn đang sử dụng SQL hàng ngày và đang tìm cách giảm đáng kể độ trễ của phân tích dữ liệu, hãy nhớ sử dụng Materialize
Materialize là Cơ sở dữ liệu phát trực tuyến cho Phân tích thời gian thực. Nó là một cơ sở dữ liệu phản ứng cung cấp các bản cập nhật chế độ xem gia tăng và nó giúp các nhà phát triển dễ dàng xây dựng bằng cách truyền dữ liệu bằng cách sử dụng SQL tiêu chuẩn