Có bao nhiêu byte là datetime trong MySQL?

Số thập phân được lưu trữ bằng định dạng nhị phân, với số nguyên và phân số được lưu trữ riêng. Mỗi bội số chín chữ số yêu cầu 4 byte, theo sau là một số byte cho phần còn lại, như sau

Kiểu dữ liệu chuỗi

Trong phần mô tả bên dưới, M là độ dài cột được khai báo (tính bằng ký tự hoặc byte), trong khi len là độ dài thực tính bằng byte của giá trị

Trong một số bộ ký tự, không phải tất cả các ký tự đều sử dụng cùng một số byte. utf8 mã hóa các ký tự với một đến ba byte cho mỗi ký tự, trong khi utf8mb4 yêu cầu một đến bốn byte cho mỗi ký tự

Khi sử dụng trường thuộc tính NÉN, 1 byte được dành riêng cho siêu dữ liệu. Ví dụ: VARCHAR(255) sẽ sử dụng +2 byte thay vì +1

ví dụ

Giả sử một bộ ký tự một byte

Kiểu dữ liệu ngày và giờ

Micro giây

MariaDB 5. 3 và MySQL5. 6 micro giây được giới thiệu. Việc triển khai lưu trữ cơ bản là khác, nhưng từ MariaDB 10. 1, MariaDB mặc định ở định dạng MySQL (bằng biến). Micro giây có các yêu cầu lưu trữ bổ sung sau đây

mysql 5. 6+ và MariaDB 10. 1+

MariaDB 5. 3 - MariaDB 10. 0

NULL

Đối với các định dạng hàng InnoDB COMPACT, DYNAMIC và COMPRESSED, một số byte sẽ được phân bổ trong tiêu đề bản ghi cho các trường có thể null. Nếu có từ 1 đến 8 trường nullable, 1 byte như vậy sẽ được cấp phát. Trong khu vực tải trọng của bản ghi, sẽ không có khoảng trống nào được dành riêng cho các giá trị NULL

Đối với định dạng hàng REDUNDANT của InnoDB, chi phí chung là 1 bit trong tiêu đề bản ghi (như một phần của con trỏ "cuối trường" 1 byte hoặc 2 byte). Ở định dạng đó, trường có độ dài cố định NULL sẽ sử dụng cùng một lượng dung lượng như bất kỳ giá trị NOT NULL nào trong khu vực tải trọng của bản ghi. Động lực là có thể cập nhật tại chỗ giữa các giá trị NOT NULL và NULL

Một câu hỏi đơn giản có thể xuất hiện trong đầu khi làm việc với MySQL là "Có nên gán kiểu dữ liệu DATETIME hoặc TIMESTAMP cho một cột vì cả hai dường như lưu trữ cùng một dữ liệu?". Mặc dù chúng lưu trữ cùng một dữ liệu, nhưng chúng khác nhau theo một số cách;

Điểm tương đồng giữa DATETIME và TIMESTAMP

  1. Cả hai đều lưu trữ dữ liệu theo định dạng "YYYY-MM-DD HH. MM. định dạng SS"
  2. Cả hai đều bao gồm một ngày cũng như một phần thời gian
  3. Khởi tạo tự động có thể xảy ra cho cả hai
  4. Cả hai thay đổi dữ liệu trong khi cập nhật bản ghi với thời gian dữ liệu hiện tại theo ràng buộc
  5. Cả hai đều có thể có phần giây phân số có độ chính xác lên đến 6 chữ số micro giây

Sự khác biệt giữa DATETIME và TIMESTAMP

  1. Phạm vi được hỗ trợ cho DATETIME là '1000-01-01 00. 00. 00' đến '9999-12-31 23. 59. 59' trong khi đối với DẤU THỜI GIAN là '1970-01-01 00. 00. 01' UTC đến '2038-01-09 03. 14. 07' UTC
  2. Trước MySQL 5. 6. 4, DẤU THỜI GIAN cần 4 byte (+3 byte cho giây phân số) để lưu trữ dữ liệu trong khi DATETIME cần 8 byte (+3 byte cho giây phân số)
  3. Kể từ MySQL 5. 6. 4, DATETIME yêu cầu 5 byte + 3 byte bổ sung để lưu trữ dữ liệu phân số giây
  4. Trong MySQL5+, giá trị TIMESTAMP chuyển đổi từ thời điểm hiện tại sang UTC và ngược lại trong khi DATETIME không thực hiện bất kỳ chuyển đổi nào
  5. DẤU THỜI GIAN khác với cài đặt múi giờ hiện tại trong khi DATETIME không đổi
  6. Dữ liệu DẤU THỜI GIAN có thể được lập chỉ mục trong khi dữ liệu DATETIME không thể
  7. Các truy vấn có DATETIME sẽ không được lưu vào bộ nhớ đệm nhưng các truy vấn có DẤU THỜI GIAN sẽ được lưu vào bộ nhớ đệm

Múi giờ hệ thống của tôi là IST, vì vậy theo mặc định, MySQL sử dụng múi giờ IST

  1. mysql>TẠO BẢNG `nhân viên`
  2. (
  3. `entry_time` datetime KHÔNG NULL DEFAULT CURRENT_TIMESTAMP BẬT
  4. CẬP NHẬT CURRENT_TIMESTAMP
  5. )
  6. engine=innodb DEFAULT charset=latin1 mysqlINSERT INTO `employee`
  7. (
  8. `thời_gian`
  9. )
  10. GIÁ TRỊ
  11. (
  12. DẤU THỜI GIAN HIỆN TẠI
  13. );mysql>CHỌN *
  14. TỪ    `nhân viên`;

Bây giờ, hãy thay đổi múi giờ hệ thống từ IST sang EST, tôi. e. , UTC-05. 00 trong những tháng lạnh của Giờ tiết kiệm ánh sáng ban ngày

  1. mysql> SET @@session. time_zone = '-05. 00';
  2. mysql> INSERT INTO `employee` (`entry_time`) VALUES (CURRENT_TIMESTAMP);
  3. mysql> CHỌN * TỪ `nhân viên`;

Kết quả là như nhau mặc dù chúng tôi đã thay đổi múi giờ

  1. mysql>TẠO BẢNG `nhân viên`
  2. (
  3. `entry_time` dấu thời gian KHÔNG NULL DEFAULT CURRENT_TIMESTAMP BẬT
  4. CẬP NHẬT CURRENT_TIMESTAMP
  5. )
  6. engine=innodb DEFAULT charset=latin1 mysqlINSERT INTO `employee`
  7. (
  8. `thời_gian`
  9. )
  10. GIÁ TRỊ
  11. (
  12. DẤU THỜI GIAN HIỆN TẠI
  13. );mysql>CHỌN *
  14. TỪ    `nhân viên`;

  1. mysql> SET @@session. time_zone = '-05. 00';

Bây giờ, hãy thay đổi múi giờ hệ thống từ IST sang EST, tôi. e. , UTC-05. 00 trong những tháng lạnh của Giờ tiết kiệm ánh sáng ban ngày

ĐẦU RA

Thời gian nhập cảnh ____________________

Phần kết luận

Kết quả trên có thể thay đổi theo múi giờ đã đặt, tôi. e. , EST tức là -5 giờ kể từ giờ UTC

Mặc dù cả hai kiểu dữ liệu trông giống nhau, nhưng chúng khác nhiều so với những gì chúng ta có thể nghĩ về. Hy vọng thủ thuật nhỏ này sẽ giúp được ai đó phần nào trong việc phân biệt 2 kiểu dữ liệu khó hiểu này. Vui lòng chia sẻ phản hồi của bạn nếu bạn thấy mẹo này hữu ích cho bạn

Định dạng của datetime trong MySQL là gì?

MySQL truy xuất và hiển thị giá trị DATETIME trong ' YYYY-MM-DD hh. mm. định dạng ss '. Phạm vi được hỗ trợ là '1000-01-01 00. 00. 00' đến '9999-12-31 23. 59. 59'. Kiểu dữ liệu DẤU THỜI GIAN được sử dụng cho các giá trị chứa cả phần ngày và giờ. DẤU THỜI GIAN có phạm vi '1970-01-01 00. 00. 01' UTC đến '2038-01-19 03. 14. 07' UTC.

Thời gian SQL là bao nhiêu byte?

Độ dài của cột THỜI GIAN, như được mô tả trong SQLDA, là 8 byte , đây là độ dài phù hợp để biểu diễn chuỗi ký tự .

Kích thước của DẤU THỜI GIAN trong SQL là bao nhiêu?

Định dạng cho kiểu dữ liệu DẤU THỜI GIAN/DATETIME là YYYY-MM-DD HH. MM. SS dài 19 ký tự

Kích thước bộ nhớ của kiểu dữ liệu ngày giờ là gì?

Ngày, Thời gian và Dấu thời gian . – Kích thước tốt nhất cho Dấu thời gian đầy đủ, 13 byte. điều này sẽ tạo ra kết quả số nguyên 4 byte. Một kỹ thuật phổ biến để giảm dung lượng bộ nhớ của dấu thời gian là tách dấu thời gian thành hai trường, ngày nguyên và thời gian phân số. 13 bytes. – Best size for a full Timestamp, 13 bytes. this will produce a 4 byte integer result. A common technique for reducing the memory footprint of timestamps is to separate the timestamp into two fields, integer date and fractional time.