Chuyển Timestamp Sang Datetime [NĂM - Tháng - ngào
SELECT from_unixtime[ 1533353278,"%Y-%m-%d %h:%i:%s"]
// 1533353278 = Dấu thời gian
Vì vậy, sánh dấu thời gian với thời gian hiện với kết que
// Timestamp – now[] = phút
SELECT TIMESTAMPDIFF[MINUTE, from_unixtime[ 1533353278 ,"%Y-%m-%d %h:%i:%s"], now[] ]
// 1533353278 = Dấu thời gian
Vì vậy, sánh dấu thời gian với thời gian hiện với kết que
Senior PHP Developer
Thiết kế web Panpic.vn
Kể từ MySQL 5.7.22, DATETIME
4 không được chấp nhận; Hy vọng nó sẽ bị loại bỏ trong một phiên bản tương lai của MySQL.
11.2.2 & NBSP; ngày, DateTime và Dấu thời gian“supported” means that although earlier values might work, there is no guarantee.
Các loại DATE
, DATETIME
và TIMESTAMP
có liên quan. Phần này mô tả các đặc điểm của chúng, làm thế nào chúng giống nhau và cách chúng khác nhau. MySQL nhận ra các giá trị DATE
, DATETIME
và TIMESTAMP
trong một số định dạng, được mô tả trong Phần & NBSP; 9.1.3, Ngày và thời gian theo nghĩa đen. Đối với các mô tả phạm vi DATE
và DATETIME
, được hỗ trợ, có nghĩa là mặc dù các giá trị trước đó có thể hoạt động, nhưng không có gì đảm bảo.
Loại DATE
được sử dụng cho các giá trị với phần ngày nhưng không có phần thời gian. MySQL truy xuất và hiển thị các giá trị DATE
ở định dạng
SELECT TIMESTAMPDIFF[MINUTE, from_unixtime[ 1533353278 ,"%Y-%m-%d %h:%i:%s"], now[] ]
2 '. Phạm vi được hỗ trợ là
SELECT TIMESTAMPDIFF[MINUTE, from_unixtime[ 1533353278 ,"%Y-%m-%d %h:%i:%s"], now[] ]
3 đến
SELECT TIMESTAMPDIFF[MINUTE, from_unixtime[ 1533353278 ,"%Y-%m-%d %h:%i:%s"], now[] ]
4. Loại DATETIME
được sử dụng cho các giá trị có chứa cả phần ngày và thời gian. MySQL truy xuất và hiển thị các giá trị DATETIME
ở định dạng
SELECT TIMESTAMPDIFF[MINUTE, from_unixtime[ 1533353278 ,"%Y-%m-%d %h:%i:%s"], now[] ]
7 '. Phạm vi được hỗ trợ là
SELECT TIMESTAMPDIFF[MINUTE, from_unixtime[ 1533353278 ,"%Y-%m-%d %h:%i:%s"], now[] ]
8 đến
SELECT TIMESTAMPDIFF[MINUTE, from_unixtime[ 1533353278 ,"%Y-%m-%d %h:%i:%s"], now[] ]
9. Kiểu dữ liệu TIMESTAMP
được sử dụng cho các giá trị có chứa cả phần ngày và phần thời gian. TIMESTAMP
có phạm vi DATE
2 UTC đến DATE
3 UTC.
Giá trị DATETIME
hoặc TIMESTAMP
có thể bao gồm một phần phần hai phần trong tối đa đến độ chính xác của micro giây [6 chữ số]. Cụ thể, bất kỳ phần phân số nào trong một giá trị được chèn vào cột DATETIME
hoặc TIMESTAMP
đều được lưu trữ thay vì loại bỏ. Với phần phân số bao gồm, định dạng cho các giá trị này là ________ 17 [.________ 29] ', phạm vi cho các giá trị DATETIME
là DATETIME
1 đến DATETIME
2 và phạm vi cho các giá trị TIMESTAMP
là DATETIME
4 đến DATETIME
5. Phần phân số phải luôn luôn được tách ra khỏi thời gian còn lại bằng một điểm thập phân; Không có phân đoạn phân đoạn nào khác được công nhận. Để biết thông tin về hỗ trợ giây phân đoạn trong MySQL, xem Phần & NBSP; 11.2.7, Phần giây phân đoạn trong các giá trị thời gian.
MySQL chuyển đổi các giá trị TIMESTAMP
từ múi giờ hiện tại thành UTC để lưu trữ và quay lại từ UTC sang múi giờ hiện tại để truy xuất. [Điều này không xảy ra đối với các loại khác như DATETIME
.] Theo mặc định, múi giờ hiện tại cho mỗi kết nối là thời gian của máy chủ. Múi giờ có thể được đặt trên cơ sở mỗi kết nối. Miễn là cài đặt múi giờ không đổi, bạn sẽ lấy lại cùng một giá trị bạn lưu trữ. Nếu bạn lưu trữ giá trị TIMESTAMP
và sau đó thay đổi múi giờ và truy xuất giá trị, giá trị được truy xuất khác với giá trị bạn lưu trữ. Điều này xảy ra bởi vì cùng một múi giờ không được sử dụng để chuyển đổi theo cả hai hướng. Múi giờ hiện tại có sẵn dưới dạng giá trị của biến hệ thống TIMESTAMP
1. Để biết thêm thông tin, hãy xem Phần & NBSP; 5.1.13, Múi giờ của MySQL Hỗ trợ múi giờ của MySQL.
Các giá trị không hợp lệ DATE
, DATETIME
hoặc TIMESTAMP
được chuyển đổi thành giá trị Zero Zero của loại thích hợp [TIMESTAMP
5 hoặc TIMESTAMP
6], nếu chế độ SQL cho phép chuyển đổi này. Hành vi chính xác phụ thuộc vào nếu bất kỳ chế độ SQL nghiêm ngặt nào và chế độ TIMESTAMP
7 SQL được bật; Xem Phần & NBSP; 5.1.10, Chế độ SQL Server SQL.“zero” value of the appropriate type
[TIMESTAMP
5 or TIMESTAMP
6], if the SQL mode permits this conversion. The precise behavior depends on which if any of strict SQL mode and the TIMESTAMP
7 SQL mode are enabled; see Section 5.1.10, “Server SQL Modes”.
Hãy nhận biết các thuộc tính nhất định của giải thích giá trị ngày trong MySQL:
MySQL cho phép định dạng trực tuyến của người Viking cho các giá trị được chỉ định là chuỗi, trong đó bất kỳ ký tự dấu câu nào cũng có thể được sử dụng làm dấu phân cách giữa các phần ngày hoặc phần thời gian. Trong một số trường hợp, cú pháp này có thể lừa dối. Ví dụ, một giá trị như
TIMESTAMP
8 có thể trông giống như giá trị thời gian vìTIMESTAMP
9, nhưng được hiểu là nămDATE
0 nếu được sử dụng trong bối cảnh ngày. Giá trịDATE
1 được chuyển đổi thànhTIMESTAMP
5 vìDATE
3 không phải là một tháng hợp lệ.“relaxed” format for values specified as strings, in which any punctuation character may be used as the delimiter between date parts or time parts. In some cases, this syntax can be deceiving. For example, a value such asTIMESTAMP
8 might look like a time value because of theTIMESTAMP
9, but is interpreted as the yearDATE
0 if used in date context. The valueDATE
1 is converted toTIMESTAMP
5 becauseDATE
3 is not a valid month.Phân định duy nhất được công nhận giữa phần ngày và phần thời gian và phần giây phân số là điểm thập phân.
Máy chủ yêu cầu giá trị tháng và ngày đó có giá trị và không chỉ trong phạm vi 1 đến 12 và 1 đến 31, tương ứng. Với chế độ nghiêm ngặt bị vô hiệu hóa, các ngày không hợp lệ như
DATE
4 được chuyển đổi thànhTIMESTAMP
5 và cảnh báo được tạo ra. Với chế độ nghiêm ngặt được bật, ngày không hợp lệ tạo ra lỗi. Để cho phép ngày như vậy, bậtDATE
6. Xem Phần & NBSP; 5.1.10, Chế độ SQL Server SQL, để biết thêm thông tin.MySQL không chấp nhận các giá trị
TIMESTAMP
bao gồm số 0 trong cột ngày hoặc tháng hoặc các giá trị không phải là ngày hợp lệ. Ngoại lệ duy nhất cho quy tắc này là giá trị đặc biệt của Zero ZeroDATE
8, nếu chế độ SQL cho phép giá trị này. Hành vi chính xác phụ thuộc vào nếu bất kỳ chế độ SQL nghiêm ngặt nào và chế độTIMESTAMP
7 SQL được bật; Xem Phần & NBSP; 5.1.10, Chế độ SQL Server SQL.“zero” valueDATE
8, if the SQL mode permits this value. The precise behavior depends on which if any of strict SQL mode and theTIMESTAMP
7 SQL mode are enabled; see Section 5.1.10, “Server SQL Modes”.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
DATETIME
0 trở thànhDATETIME
1.Giá trị năm trong phạm vi
DATETIME
2 trở thànhDATETIME
3.
Xem thêm Phần & NBSP; 11.2.9, Năm 2 chữ số trong ngày.
Ghi chú
Máy chủ MySQL có thể được chạy với chế độ DATETIME
4 SQL được bật. Trong trường hợp này, TIMESTAMP
giống hệt với DATETIME
. Nếu chế độ này được bật tại thời điểm mà bảng được tạo, các cột TIMESTAMP
được tạo dưới dạng các cột DATETIME
. Do đó, các cột như vậy sử dụng định dạng hiển thị DATETIME
, có cùng một phạm vi giá trị và không có khởi tạo tự động hoặc cập nhật đến ngày và giờ hiện tại. Xem Phần & NBSP; 5.1.10, Chế độ SQL Server SQL.
Ghi chú
Máy chủ MySQL có thể được chạy với chế độ DATETIME
4 SQL được bật. Trong trường hợp này, TIMESTAMP
giống hệt với DATETIME
. Nếu chế độ này được bật tại thời điểm mà bảng được tạo, các cột TIMESTAMP
được tạo dưới dạng các cột DATETIME
. Do đó, các cột như vậy sử dụng định dạng hiển thị DATETIME
, có cùng một phạm vi giá trị và không có khởi tạo tự động hoặc cập nhật đến ngày và giờ hiện tại. Xem Phần & NBSP; 5.1.10, Chế độ SQL Server SQL.