Hướng dẫn how does mysql store time? - mysql lưu trữ thời gian như thế nào?

Các loại dữ liệu ngày và thời gian để biểu diễn các giá trị thời gian là DATE, TIME, DATETIME, TIMESTAMPYEAR. Mỗi loại tạm thời có một phạm vi các giá trị hợp lệ, cũng như giá trị Zero Zero có thể được sử dụng khi bạn chỉ định một giá trị không hợp lệ mà MySQL không thể biểu thị. Các loại TIMESTAMPDATETIME có hành vi cập nhật tự động đặc biệt, được mô tả trong Phần & NBSP; 11.2.5, Khởi tạo tự động và cập nhật cho dấu thời gian và DateTime.zero value that may be used when you specify an invalid value that MySQL cannot represent. The TIMESTAMP and DATETIME types have special automatic updating behavior, described in Section 11.2.5, “Automatic Initialization and Updating for TIMESTAMP and DATETIME”.

Để biết thông tin về các yêu cầu lưu trữ của các loại dữ liệu thời gian, xem Phần & NBSP; 11.7, Yêu cầu lưu trữ kiểu dữ liệu.

Đối với các mô tả về các hàm hoạt động trên các giá trị thời gian, xem Phần & NBSP; 12.7, Hàm ngày và thời gian.

Hãy ghi nhớ những cân nhắc chung này khi làm việc với các loại ngày và thời gian:

  • MySQL lấy các giá trị cho một ngày hoặc loại thời gian nhất định ở định dạng đầu ra tiêu chuẩn, nhưng nó cố gắng giải thích nhiều định dạng cho các giá trị đầu vào mà bạn cung cấp (ví dụ: khi bạn chỉ định giá trị được gán hoặc so sánh với ngày hoặc ngày loại thời gian). Để biết mô tả về các định dạng được phép cho các loại ngày và giờ, xem phần & nbsp; 9.1.3, Ngày và thời gian theo nghĩa đen. Dự kiến ​​bạn cung cấp các giá trị hợp lệ. Kết quả không thể đoán trước có thể xảy ra nếu bạn sử dụng các giá trị ở các định dạng khác.

  • Mặc dù MySQL cố gắng giải thích các giá trị theo một số định dạng, các phần ngày phải luôn được đưa ra theo thứ tự ngày trong một tháng (ví dụ: '98-09-04'), thay vì trong các đơn đặt hàng ngày trong năm hoặc ngày thường được sử dụng ở nơi khác ( Ví dụ, '09-04-98', '04-09-98'). Để chuyển đổi các chuỗi theo các đơn đặt hàng khác thành đơn đặt hàng trong tháng, hàm TIME0 có thể hữu ích.

  • Ngày chứa các giá trị năm chữ số là mơ hồ vì thế kỷ chưa được biết. MySQL diễn giải các giá trị năm 2 chữ số bằng cách sử dụng các quy tắc này:

    • Giá trị năm trong phạm vi TIME1 trở thành TIME2.

    • Giá trị năm trong phạm vi TIME3 trở thành TIME4.

    Xem thêm Phần & NBSP; 11.2.8, Năm 2 chữ số trong ngày.

  • Chuyển đổi các giá trị từ loại thời gian này sang loại thời gian khác xảy ra theo các quy tắc trong Phần & NBSP; 11.2.7, Chuyển đổi giữa các loại ngày và thời gian.

  • MySQL tự động chuyển đổi giá trị ngày hoặc thời gian thành một số nếu giá trị được sử dụng trong bối cảnh số và ngược lại.

  • Theo mặc định, khi MySQL gặp giá trị cho một ngày hoặc loại thời gian nằm ngoài phạm vi hoặc không hợp lệ cho loại, nó sẽ chuyển đổi giá trị thành giá trị của Zero Zero cho loại đó. Ngoại lệ là các giá trị TIME ngoài phạm vi được cắt vào điểm cuối thích hợp của phạm vi TIME.zero value for that type. The exception is that out-of-range TIME values are clipped to the appropriate endpoint of the TIME range.

  • Bằng cách đặt chế độ SQL thành giá trị thích hợp, bạn có thể chỉ định chính xác hơn loại ngày bạn muốn MySQL hỗ trợ. . Điều này rất hữu ích khi bạn muốn lưu trữ một giá trị có thể sai có thể sai mà người dùng đã chỉ định (ví dụ: ở dạng web) trong cơ sở dữ liệu để xử lý trong tương lai. Trong chế độ này, MySQL chỉ xác minh rằng tháng nằm trong khoảng từ 1 đến 12 và ngày nằm trong khoảng từ 1 đến 31.possibly wrong value which the user has specified (for example, in a web form) in the database for future processing. Under this mode, MySQL verifies only that the month is in the range from 1 to 12 and that the day is in the range from 1 to 31.

  • MySQL cho phép bạn lưu trữ ngày trong đó ngày hoặc tháng và ngày bằng 0 trong cột DATE hoặc DATETIME. Điều này rất hữu ích cho các ứng dụng cần lưu trữ ngày sinh mà bạn có thể không biết ngày chính xác. Trong trường hợp này, bạn chỉ cần lưu trữ ngày là DATETIME1 hoặc DATETIME2. Tuy nhiên, với các ngày như thế này, bạn không nên mong đợi nhận được kết quả chính xác cho các chức năng như DATETIME3 hoặc DATETIME4 yêu cầu ngày hoàn chỉnh. Để không cho phép các bộ phận là tháng hoặc ngày trong ngày, bật chế độ DATETIME5.

  • MySQL cho phép bạn lưu trữ một giá trị không có giá trị là DATETIME6 như một ngày giả của người Hồi giáo. Trong một số trường hợp, điều này thuận tiện hơn so với sử dụng các giá trị DATETIME7 và sử dụng ít dữ liệu và không gian chỉ mục hơn. Để không cho phép DATETIME6, bật chế độ DATETIME9.zero value of DATETIME6 as a dummy date. In some cases, this is more convenient than using DATETIME7 values, and uses less data and index space. To disallow DATETIME6, enable the DATETIME9 mode.

  • Giá trị ngày hoặc thời gian của Zero Zero được sử dụng thông qua Trình kết nối/ODBC được chuyển đổi tự động thành DATETIME7 vì ODBC không thể xử lý các giá trị đó.Zero date or time values used through Connector/ODBC are converted automatically to DATETIME7 because ODBC cannot handle such values.

Bảng sau đây cho thấy định dạng của giá trị Zero Zero cho từng loại. Các giá trị của Zero Zero rất đặc biệt, nhưng bạn có thể lưu trữ hoặc tham khảo chúng một cách rõ ràng bằng cách sử dụng các giá trị được hiển thị trong bảng. Bạn cũng có thể làm điều này bằng cách sử dụng các giá trị TIMESTAMP1 hoặc TIMESTAMP2, dễ viết hơn. Đối với các loại thời gian bao gồm phần ngày (DATE, DATETIMETIMESTAMP), việc sử dụng các giá trị này có thể tạo ra cảnh báo hoặc lỗi. Hành vi chính xác phụ thuộc vào chế độ nghiêm ngặt và DATETIME9 SQL được bật; Xem Phần & NBSP; 5.1.11, Chế độ SQL Server SQL.zero value for each type. The zero values are special, but you can store or refer to them explicitly using the values shown in the table. You can also do this using the values TIMESTAMP1 or TIMESTAMP2, which are easier to write. For temporal types that include a date part (DATE, DATETIME, and TIMESTAMP), use of these values may produce warning or errors. The precise behavior depends on which, if any, of the strict and DATETIME9 SQL modes are enabled; see Section 5.1.11, “Server SQL Modes”.


Có kiểu dữ liệu thời gian trong MySQL không?

Các loại dữ liệu ngày và thời gian để đại diện cho các giá trị thời gian là ngày, thời gian, datetime, dấu thời gian và năm. Mỗi loại tạm thời có một phạm vi các giá trị hợp lệ, cũng như giá trị Zero Zero có thể được sử dụng khi bạn chỉ định một giá trị không hợp lệ mà MySQL không thể biểu thị.DATE , TIME , DATETIME , TIMESTAMP , and YEAR . Each temporal type has a range of valid values, as well as a “zero” value that may be used when you specify an invalid value that MySQL cannot represent.

Timestamp được lưu trữ như thế nào trong cơ sở dữ liệu?

Định dạng của dấu thời gian là Yyyy-MM-DD HH: MM: SS được cố định ở mức 19 ký tự.Giá trị dấu thời gian có một phạm vi từ '1970-01-01 00:00:01' UTC đến '2038-01-19 03:14:07' UTC.Khi bạn chèn giá trị dấu thời gian vào bảng, MySQL đã chuyển đổi nó từ múi giờ của kết nối thành UTC để lưu trữ.MySQL converts it from your connection's time zone to UTC for storing.

Thời gian ngày được lưu trữ như thế nào?

Một cách phổ biến để lưu trữ dữ liệu ngày/thời gian, được sử dụng "đằng sau hậu trường" bởi nhiều sản phẩm, là bằng cách chuyển đổi nó thành một giá trị thập phân trong đó "ngày" là phần số nguyên của giá trị thập phân và "thời gian" là phân sốgiá trị.converting it into a decimal value where the "date" is the integer portion of the decimal value, and the "time" is the fractional value.

MySQL sử dụng lúc mấy giờ?

Theo mặc định, múi giờ cho phiên bản DB MySQL được phối hợp thời gian phổ quát (UTC).Universal Time Coordinated (UTC).