Tóm lược. trong hướng dẫn này, chúng tôi sẽ giới thiệu cho bạn kiểu dữ liệu MySQL
3 và chỉ cho bạn một số hàm ngày hữu ích để xử lý dữ liệu ngày một cách hiệu quảCode language: SQL [Structured Query Language] [sql]
SELECT first_name, last_name, birth_date FROM people;
Giới thiệu về kiểu dữ liệu DATE của MySQL
MySQL
3 là một trong năm loại dữ liệu tạm thời được sử dụng để quản lý các giá trị ngày. MySQL sử dụng định dạngCode language: SQL [Structured Query Language] [sql]
SELECT first_name, last_name, birth_date FROM people;
5 để lưu trữ giá trị ngày. Định dạng này là cố định và không thể thay đổi nóCode language: SQL [Structured Query Language] [sql]
SELECT first_name, last_name, birth_date FROM people;
Ví dụ: bạn có thể muốn sử dụng định dạng
6 nhưng bạn không thể. Thay vào đó, bạn tuân theo định dạng ngày chuẩn và sử dụng hàmCode language: SQL [Structured Query Language] [sql]
SELECT first_name, last_name, birth_date FROM people;
7 để định dạng ngày theo cách bạn muốnCode language: SQL [Structured Query Language] [sql]
SELECT first_name, last_name, birth_date FROM people;
MySQL sử dụng 3 byte để lưu trữ giá trị
3. Các giá trị củaCode language: SQL [Structured Query Language] [sql]
SELECT first_name, last_name, birth_date FROM people;
3 nằm trong khoảng từCode language: SQL [Structured Query Language] [sql]
SELECT first_name, last_name, birth_date FROM people;
0 đếnCode language: SQL [Structured Query Language] [sql]
INSERT INTO people[first_name,last_name,birth_date] VALUES['Jack','Daniel','01-09-01'], ['Lily','Bush','80-09-01'];
1. Nếu bạn muốn lưu trữ một giá trị ngày nằm ngoài phạm vi này, bạn cần sử dụng kiểu dữ liệu phi thời gian như số nguyên e. g. , ba cột và mỗi cột cho năm, tháng và ngày. Bạn cũng cần tạo các hàm được lưu trữ để mô phỏng các hàm ngày được tích hợp sẵn do MySQL cung cấp, điều này không được khuyến nghịCode language: SQL [Structured Query Language] [sql]
INSERT INTO people[first_name,last_name,birth_date] VALUES['Jack','Daniel','01-09-01'], ['Lily','Bush','80-09-01'];
Khi chế độ nghiêm ngặt bị tắt, MySQL sẽ chuyển đổi bất kỳ ngày không hợp lệ nào thành. g. ,
2 đến giá trị ngày 0Code language: SQL [Structured Query Language] [sql]
INSERT INTO people[first_name,last_name,birth_date] VALUES['Jack','Daniel','01-09-01'], ['Lily','Bush','80-09-01'];
3Code language: SQL [Structured Query Language] [sql]
INSERT INTO people[first_name,last_name,birth_date] VALUES['Jack','Daniel','01-09-01'], ['Lily','Bush','80-09-01'];
Giá trị ngày của MySQL với năm có hai chữ số
MySQL lưu trữ năm của giá trị ngày bằng bốn chữ số. Trường hợp bạn sử dụng giá trị năm có 2 chữ số thì MySQL vẫn chấp nhận với quy tắc sau
- Các giá trị năm trong phạm vi 00-69 được chuyển đổi thành 2000-2069
- Các giá trị năm trong phạm vi 70-99 được chuyển đổi thành 1970 – 1999
Tuy nhiên, giá trị ngày có hai chữ số không rõ ràng, do đó bạn nên tránh sử dụng nó
Hãy cùng xem ví dụ sau
Đầu tiên, tạo bảng tên người có cột ngày sinh với kiểu dữ liệu
3
SELECT first_name, last_name, birth_date FROM people;
Code language: SQL [Structured Query Language] [sql]
Code language: SQL [Structured Query Language] [sql]
CREATE TABLE people [ id INT AUTO_INCREMENT PRIMARY KEY, first_name VARCHAR[50] NOT NULL, last_name VARCHAR[50] NOT NULL, birth_date DATE NOT NULL ];
Tiếp theo, chèn một hàng vào bảng
5Code language: SQL [Structured Query Language] [sql]
INSERT INTO people[first_name,last_name,birth_date] VALUES['Jack','Daniel','01-09-01'], ['Lily','Bush','80-09-01'];
Code language: SQL [Structured Query Language] [sql]
INSERT INTO people[first_name,last_name,birth_date] VALUES['John','Doe','1990-09-01'];
Sau đó, truy vấn dữ liệu từ bảng
5Code language: SQL [Structured Query Language] [sql]
INSERT INTO people[first_name,last_name,birth_date] VALUES['Jack','Daniel','01-09-01'], ['Lily','Bush','80-09-01'];
Code language: SQL [Structured Query Language] [sql]
SELECT first_name, last_name, birth_date FROM people;
Sau đó, sử dụng định dạng năm có hai chữ số để chèn dữ liệu vào bảng
5Code language: SQL [Structured Query Language] [sql]
INSERT INTO people[first_name,last_name,birth_date] VALUES['Jack','Daniel','01-09-01'], ['Lily','Bush','80-09-01'];
Code language: SQL [Structured Query Language] [sql]
INSERT INTO people[first_name,last_name,birth_date] VALUES['Jack','Daniel','01-09-01'], ['Lily','Bush','80-09-01'];
Ở hàng đầu tiên, chúng tôi đã sử dụng 01 [phạm vi 00-69] làm năm, vì vậy MySQL đã chuyển đổi nó thành 2001. Ở hàng thứ hai, chúng tôi đã sử dụng 80 [phạm vi 70-99] làm năm, MySQL đã chuyển đổi nó thành 1980
Cuối cùng, chúng ta có thể truy vấn dữ liệu từ bảng
5 để kiểm tra xem dữ liệu có được chuyển đổi dựa trên quy tắc chuyển đổi hay khôngCode language: SQL [Structured Query Language] [sql]
INSERT INTO people[first_name,last_name,birth_date] VALUES['Jack','Daniel','01-09-01'], ['Lily','Bush','80-09-01'];
Code language: SQL [Structured Query Language] [sql]
SELECT first_name, last_name, birth_date FROM people;
Hàm MySQL SELECT
first_name,
last_name,
birth_date
FROM
people;
Code language: SQL [Structured Query Language] [sql]
3
SELECT
first_name,
last_name,
birth_date
FROM
people;
MySQL cung cấp nhiều hàm ngày hữu ích cho phép bạn thao tác ngày hiệu quả
Để lấy ngày giờ hiện tại, bạn sử dụng hàm
0Code language: SQL [Structured Query Language] [sql]
SELECT first_name, last_name, birth_date FROM people;
SELECT NOW[];
Code language: SQL [Structured Query Language] [sql]
Code language: SQL [Structured Query Language] [sql]
+---------------------+ | NOW[] | +---------------------+ | 2017-05-13 07:59:38 | +---------------------+ 1 row in set [0.02 sec]
Để chỉ lấy một phần ngày của giá trị
1, bạn sử dụng hàmCode language: SQL [Structured Query Language] [sql]
SELECT first_name, last_name, birth_date FROM people;
2Code language: SQL [Structured Query Language] [sql]
SELECT first_name, last_name, birth_date FROM people;
Code language: SQL [Structured Query Language] [sql]
SELECT DATE[NOW[]];
Code language: SQL [Structured Query Language] [sql]
+-------------+ | DATE[NOW[]] | +-------------+ | 2015-07-13 | +-------------+ 1 row in set [0.01 sec]
Để lấy ngày hệ thống hiện tại, bạn sử dụng hàm
3 như sauCode language: SQL [Structured Query Language] [sql]
SELECT first_name, last_name, birth_date FROM people;
Code language: SQL [Structured Query Language] [sql]
SELECT CURDATE[];
0Code language: SQL [Structured Query Language] [sql]
INSERT INTO people[first_name,last_name,birth_date] VALUES['John','Doe','1990-09-01'];
Để định dạng giá trị ngày tháng, bạn sử dụng hàm
7. Câu lệnh sau định dạng ngày là_______0_______5 sử dụng mẫu định dạng ngàyCode language: SQL [Structured Query Language] [sql]
SELECT first_name, last_name, birth_date FROM people;
6Code language: SQL [Structured Query Language] [sql]
SELECT first_name, last_name, birth_date FROM people;
1Code language: SQL [Structured Query Language] [sql]
INSERT INTO people[first_name,last_name,birth_date] VALUES['John','Doe','1990-09-01'];
2Code language: SQL [Structured Query Language] [sql]
INSERT INTO people[first_name,last_name,birth_date] VALUES['John','Doe','1990-09-01'];
Để tính số ngày giữa hai giá trị ngày, bạn sử dụng hàm
7 như sauCode language: SQL [Structured Query Language] [sql]
SELECT first_name, last_name, birth_date FROM people;
3Code language: SQL [Structured Query Language] [sql]
INSERT INTO people[first_name,last_name,birth_date] VALUES['John','Doe','1990-09-01'];
4Code language: SQL [Structured Query Language] [sql]
INSERT INTO people[first_name,last_name,birth_date] VALUES['John','Doe','1990-09-01'];
Để thêm một số ngày, tuần, tháng, năm, v.v. , đến giá trị ngày tháng, bạn sử dụng hàm
8
SELECT first_name, last_name, birth_date FROM people;
Code language: SQL [Structured Query Language] [sql]
5Code language: SQL [Structured Query Language] [sql]
INSERT INTO people[first_name,last_name,birth_date] VALUES['John','Doe','1990-09-01'];
Tương tự, bạn có thể trừ một khoảng thời gian từ một ngày bằng cách sử dụng hàm
9.Code language: SQL [Structured Query Language] [sql]
SELECT first_name, last_name, birth_date FROM people;
6Code language: SQL [Structured Query Language] [sql]
INSERT INTO people[first_name,last_name,birth_date] VALUES['John','Doe','1990-09-01'];
Nếu muốn lấy ngày, tháng, quý và năm của một giá trị ngày tháng, bạn có thể sử dụng hàm tương ứng
0,Code language: SQL [Structured Query Language] [sql]
SELECT NOW[];
1,Code language: SQL [Structured Query Language] [sql]
SELECT NOW[];
2 vàCode language: SQL [Structured Query Language] [sql]
SELECT NOW[];
3 như sau.Code language: SQL [Structured Query Language] [sql]
SELECT NOW[];
7_______14_______8Code language: SQL [Structured Query Language] [sql]
INSERT INTO people[first_name,last_name,birth_date] VALUES['John','Doe','1990-09-01'];
Để có được các chức năng liên quan đến tuần thông tin tuần. Ví dụ, hàm
4 trả về số tuần, hàmCode language: SQL [Structured Query Language] [sql]
SELECT NOW[];
5 trả về chỉ số ngày trong tuần và hàmCode language: SQL [Structured Query Language] [sql]
SELECT NOW[];
6 trả về tuần theo lịchCode language: SQL [Structured Query Language] [sql]
SELECT NOW[];
9______0_______0Code language: SQL [Structured Query Language] [sql]
INSERT INTO people[first_name,last_name,birth_date] VALUES['John','Doe','1990-09-01'];
Hàm tuần trả về số tuần với chỉ mục dựa trên 0 nếu bạn không chuyển đối số thứ hai hoặc nếu bạn chuyển 0. Nếu bạn vượt qua 1, nó sẽ trả về số tuần với 1 chỉ mục
1Code language: SQL [Structured Query Language] [sql]
SELECT first_name, last_name, birth_date FROM people;
2Code language: SQL [Structured Query Language] [sql]
SELECT first_name, last_name, birth_date FROM people;
Trong hướng dẫn này, bạn đã tìm hiểu về loại dữ liệu MySQL
3 và cách sử dụng một số hàm ngày hữu ích để thao tác các giá trị ngàyCode language: SQL [Structured Query Language] [sql]
SELECT first_name, last_name, birth_date FROM people;