MySQL STR_TO_DATE()
cho phép bạn tạo giá trị ngày tháng từ các phần ngày tháng khác nhau.
Khi sử dụng hàm này, bạn cung cấp một chuỗi các phần ngày tháng khác nhau và đối số thứ hai chỉ định định dạng mà ngày tháng được cung cấp.
Cú pháp
Cú pháp như sau:
STR_TO_DATE (str, định dạng)
Ở đâu str
là chuỗi chứa các phần ngày tháng và định dạng là chuỗi định dạng (xác định cách str
đối số được định dạng).
Ví dụ 1 - Cách sử dụng cơ bản
Đây là một ví dụ để chứng minh.
SELECT STR_TO_DATE ('31, 12,1999 ','% d,% m,% Y ');
Kết quả:
+ -------------------------------------- + | STR_TO_DATE ('31, 12,1999 ','% d,% m,% Y ') | + --------------------------- ----------- + | 1999-12-31 | + -------------------------------------- +
Ví dụ 2 - Thứ tự của chuỗi định dạng
Chuỗi định dạng phải khớp với các giá trị được cung cấp trong chuỗi ngày. Ví dụ:bạn không thể làm như sau:
SELECT STR_TO_DATE ('31, 12,1999 ','% m,% d,% Y ');
Kết quả:
+ -------------------------------------- + | STR_TO_DATE ('31, 12,1999 ','% m,% d,% Y ') | + --------------------------- ----------- + | NULL | + -------------------------------------- +
Lý do điều này không hiệu quả là vì chúng tôi đang cố gắng buộc tháng phải có giá trị là 31, nhưng chỉ có 12 tháng trong một năm. Vì vậy, điều này sẽ dẫn đến giá trị ngày không hợp lệ.
Do đó, bạn sẽ cần phải cẩn thận khi sử dụng chức năng này, đặc biệt là khi giá trị ngày nhỏ hơn hoặc bằng 12, nếu không, bạn có thể kết thúc với việc các giá trị tháng và ngày được hoán đổi xung quanh mà không nhận thấy nó.
Ví dụ:như thế này:
SELECT STR_TO_DATE ('07, 12,1999 ','% d,% m,% Y '), STR_TO_DATE ('07, 12,1999', '% m,% d,% Y');Kết quả:
+ -------------------------------------- + ------- ------------------------------- + | STR_TO_DATE ('07, 12,1999 ','% d,% m,% Y ') | STR_TO_DATE ('07, 12,1999 ','% m,% d,% Y ') | + --------------------------- ----------- + -------------------------------------- + | 1999-12-07 | 1999-07-12 | + -------------------------------------- + ---- ---------------------------------- +Trong trường hợp này, chúng tôi không nhận được giá trị NULL như trong ví dụ trước, vì cả hai
07
và12
có thể là một ngày hoặc một tháng.Ví dụ 3 - Khớp chuỗi định dạng
Ngay cả khi chuỗi định dạng theo đúng thứ tự, nó cũng phải khớp với định dạng của các phần ngày tháng được cung cấp trong đối số đầu tiên.
Ví dụ:bạn không thể làm điều này:
SELECT STR_TO_DATE ('31 tháng 12, 1999', '% d,% m,% Y');Kết quả:
+ ---------------------------------------- + | STR_TO_DATE ('31 tháng 12, 1999', '% d,% m,% Y') | + ---------------------------- ------------ + | NULL | + ---------------------------------------- +Trong trường hợp này, chúng tôi cần làm điều gì đó như sau:
SELECT STR_TO_DATE ('31 tháng 12, 1999', '% d% M,% Y');Kết quả:
+ ----------------------------------------- + | STR_TO_DATE ('31 tháng 12, 1999', '% d% M,% Y') | + ----------------------------- ------------ + | 1999-12-31 | + ----------------------------------------- +Ví dụ 4 - Sử dụng hàm GET_FORMAT ()
Bạn cũng có thể vượt qua
GET_FORMAT()
hoạt động như đối số thứ hai.Đây là một ví dụ.
SELECT STR_TO_DATE ('12 .07.1999 ', GET_FORMAT (DATE,' USA '));Kết quả:
+ ---------------------------------------------- ------ + | STR_TO_DATE ('12 .07.1999', GET_FORMAT (DATE, 'Hoa Kỳ')) | + ------------------------------- --------------------- + | 1999-12-07 | + ------------------------------------------- --------- +Ví dụ 5 - Giá trị ngày giờ
Bạn cũng có thể sử dụng hàm này để trả về giá trị thời gian hoặc ngày giờ.
Dưới đây là một ví dụ sử dụng giá trị ngày giờ.
SELECT STR_TO_DATE ('31/12/1999 09:30:17', '% d /% m /% Y% H:% i:% s');Kết quả:
+ ---------------------------------------------- ---------- + | STR_TO_DATE ('31/12/1999 09:30:17', '% d /% m /% Y% H:% i:% s') | + -------------- ------------------------------------------ + | 1999-12-31 09:30:17 | + -------------------------------------- ------------------ +Định dạng chuỗi chỉ định
Các thông số sau có thể được sử dụng trong chuỗi định dạng. Ngoài những thứ này, bạn cũng có thể sử dụng chuỗi ký tự trong chuỗi định dạng.
Specifier | Mô tả |
---|---|
%a | Tên ngày trong tuần viết tắt (Sun .. Sat ) |
%b | Tên tháng viết tắt (Jan .. Dec ) |
%c | Tháng, số (0 .. 12 ) |
%D | Ngày trong tháng với hậu tố tiếng Anh (0th , 1st , 2nd , 3rd ,…) |
%d | Ngày trong tháng, số (00 .. 31 ) |
%e | Ngày trong tháng, dạng số (0 .. 31 ) |
%f | Microseconds (000000 .. 999999 ) |
%H | Giờ (00 .. 23 ) |
%h | Giờ (01 .. 12 ) |
%I | Giờ (01 .. 12 ) |
%i | Phút, số (00 .. 59 ) |
%j | Ngày trong năm (001 .. 366 ) |
%k | Giờ (0 .. 23 ) |
%l | Giờ (1 .. 12 ) |
%M | Tên tháng (January .. Dec ) |
%m | Tháng, số (00 .. 12 ) |
%p | AM hoặc PM |
%r | Thời gian, 12 giờ (hh:mm:ss theo sau là AM hoặc PM ) |
%S | Giây (00 .. 59 ) |
%s | Giây (00 .. 59 ) |
%T | Thời gian, 24 giờ (hh:mm:ss ) |
%U | Tuần (00 .. 53 ), trong đó Chủ nhật là ngày đầu tiên trong tuần; WEEK() chế độ 0 |
%u | Tuần (00 .. 53 ), trong đó Thứ Hai là ngày đầu tiên trong tuần; WEEK() chế độ 1 |
%V | Tuần (01 .. 53 ), trong đó Chủ nhật là ngày đầu tiên trong tuần; WEEK() chế độ 2; được sử dụng với %X |
%v | Tuần (01 .. 53 ), trong đó Thứ Hai là ngày đầu tiên trong tuần; WEEK() chế độ 3; được sử dụng với %x |
%W | Tên ngày trong tuần (Sunday .. Saturday ) |
%w | Ngày trong tuần (0 =Chủ nhật .. 6 =Thứ Bảy) |
%X | Năm cho tuần trong đó Chủ nhật là ngày đầu tiên của tuần, là số, bốn chữ số; được sử dụng với %V |
%x | Năm trong tuần, trong đó Thứ Hai là ngày đầu tiên của tuần, dạng số, bốn chữ số; được sử dụng với %v |
%Y | Năm, số, bốn chữ số |
%y | Năm, số (hai chữ số) |
%% | Chữ % nhân vật |
% | x , cho bất kỳ “x nào ”Không được liệt kê ở trên |