SO SÁNH NGÀY THÁNG TRONG SQL

     

Kiểu dữ liệu ngày tháng (date/time) không giống những kiểu tài liệu nguyên thuỷ thông thường nên hay gây trở ngại cho các bạn lập trình viên độc nhất là khi thao tác làm việc với những câu lệnh mysql, trong nội dung bài viết này mình đang tổng hợp và hướng dẫn chúng ta làm câu hỏi với hình trạng date/time trong mysql


*

1. Kiểu tài liệu ngày SQL.Bạn sẽ xem: So sánh thời hạn trong sql

MySQL có các loại dữ liệu sau cho ngày hoặc giá trị ngày / thời hạn trong đại lý dữ liệu:

Date - format YYYY-MM-DDDATETIME - format: YYYY-MM-DD HH:MI:SSTIMESTAMP - format: YYYY-MM-DD HH:MI:SSYEAR - format YYYY hoặc YY

Sql server có những loại tài liệu sau cho 1 ngày hoặc quý hiếm ngày / thời hạn trong đại lý dữ liệu:

DATE - format YYYY-MM-DDDATETIME - format: YYYY-MM-DD HH:MI:SSSMALLDATETIME - format: YYYY-MM-DD HH:MI:SSTIMESTAMP - format: 1 số duy nhất

2. Những funtion thường xuyên sử dụng.

Bạn đang xem: So sánh ngày tháng trong sql

TênChức năng
DATE()Trả về ngày từ bỏ biểu thức datetime
CURDATE()Trả về ngày hiện nay tại của dòng sản phẩm tính
YEAR()Trả về năm của ngày sẽ chỉ định
MONTH()Trả về mon của ngày vẫn chỉ định
DAY()Trả về ngày của ngày được chỉ định
TIME()Trả về giờ đồng hồ của ngày được chỉ định
DATE()Trả về ngày từ bỏ biểu thức datetime
DATE_ADD()Trả về ngày tự biểu thức datetime
DATEDIFF()Trả về ngày tự biểu thức datetime
DATE_SUB()Trả về ngày từ bỏ biểu thức datetime
NOW()Trả về thời hạn hiện tại
DAYOFWEEK()Trả về ngày của tuần
DAYNAME()Trả về thương hiệu ngày
MONTHNAME()Trả về thương hiệu tháng
STR_TO_DATE()Format chuỗi về ngày

....... Bên cạnh đó còn tương đối nhiều hàm khác tuy nhiên mình xin phép trình bày một số hàm mà họ hay sử dụng như trên.

3. Tính toán

3.1 Còn bao nhiêu ngày nữa ?

Câu hỏi này chắc hẳn rằng chạy qua đầu của họ ít duy nhất là sản phẩm tuần còn nếu như không nói là mặt hàng ngày

MySQL xử lý loại thắc mắc này với hàm DATEDIFF()

DATEDIFF() trừ hai giá trị ngày với trả về số ngày thân chúng.

SELECT DATEDIFF(CURDATE(), birthday) AS days_difference FROM friends LIMIT 5;và hiệu quả là phía trên :

*

sau khi rước được số ngày, bạn có nhu cầu xem fan đó năm nay bao nhiêu tuổi bạn chỉ việc chia mang lại 365 ngày là ra kết quả số tuổi.

SELECT ROUND(DATEDIFF(CURDATE(), birthday) / 365, 0) AS years FROM friends LIMIT 5;

*

Hàm ROUND()toán học tập được sử dụng để triển khai tròn hiệu quả thành một trong những nguyên.

Bạn cũng hoàn toàn có thể tính toán tuổi của friends bằng phương pháp sau

SELECT first_name, last_name, (YEAR(CURDATE()) - YEAR(birthday)) - (RIGHT(CURDATE(), 5) Giải ưa thích 1 chút :

Hàm CURDATE () trả về ngày hiện nay tại của sản phẩm tính, hàm YEAR () trả về năm của ngày vẫn chỉ định, hàm MONTH () trả về mon của ngày vẫn chỉ định, hàm DAY () trả về ngày của ngày được hướng dẫn và chỉ định Hàm RIGHT () trả về số lượng ký từ bỏ như được chỉ định trong hàm từ chuỗi hoặc ngày đang cho. Phần của biểu thức so sánh những trả về tự hàm RIGHT () cầu tính 1 hoặc 0. Hiệu quả là :


*

Sau khi select được số tuổi của những friend trong khoa trong các mục friend của mình bạn có nhu cầu sắp xếp số tuổi theo sản phẩm công nghệ tự bớt dần hoặc tăng đột biến thì chúng ta chỉ cần

ORDER BY age ASC; //sắp xếp tăng dầnORDER BY age DESC; // bố trí giảm dần vào cuối mệnh đề trên.

3.2 họ không khi nào quên sinh nhật buộc phải không?

Giả sử chúng ta muốn biết ngày vào tuần là sinh nhật của một fan bạn. Có lẽ rằng chúng tôi chú ý vào friends bàn mỗi tuần và hiểu rằng ai vẫn sinh nhật, giả dụ có, với ghi chú ngày hôm nay là ngày gì.

Các DAYOFWEEK()hàm trả về một cực hiếm số cho tham số quý giá ngày tháng. Những số lượng đó đại diện thay mặt cho:

1 = công ty nhật,

2 = máy hai, v.v.

Chúng ta rất có thể đặt một CASE biểu thức để sử dụng ở đây.

Xem thêm: Top 6 Cách Đọc Tên Các Loài Động Vật Bằng Tiếng Anh Có Phiên Âm Đầy Đủ Nhất

SELECT first_name, last_name, birthday, CASE WHEN DAYOFWEEK(birthday) = "1" THEN "Sunday" WHEN DAYOFWEEK(birthday) = "2" THEN "Monday" WHEN DAYOFWEEK(birthday) = "3" THEN "Tuesday" WHEN DAYOFWEEK(birthday) = "4" THEN "Wednesday" WHEN DAYOFWEEK(birthday) = "5" THEN "Thursday" WHEN DAYOFWEEK(birthday) = "6" THEN "Friday" WHEN DAYOFWEEK(birthday) = "7" THEN "Saturday" ELSE "not a day of week" end AS day_of_weekFROM friendsLIMIT 10

Awesome! Điều đó vận động hoàn hảo. Mà lại nó hơi dài để lấy tên 1 ngày trong tuần.

MySQL gồm một function DAYNAME() phù hợp cho bài toán này. Đơn giản chỉ cần cung cấp cho nó một quý giá ngày và chúng ta là vàng.

SELECT first_name, last_name, DAYNAME(birthday)FROM friendsLIMIT 10

3.3 up load tháng

Các hàm MONTH() được sử dụng để mang các cực hiếm số theo tháng từ một giá trị ngày tháng cung cấp. Như trong 1 nghĩa (tháng 1) và 12 mang lại (tháng 12) với mọi thứ không giống ở giữa.

SELECT (MONTH(birthday)) AS month, COUNT(*) AS number_of_birthdaysFROM friendsGROUP BY monthORDER BY month ASCTrong truy nã vấn này, hàm COUNT() cho số người dân có ngày sinh trong những tháng :


*

Vậy liệu bạn có thể lấy tên của tháng không ? câu trả lởi chắc chắn là tất cả rồi

Sử dụng hàm MONTHNAME(), mang tên của Tháng thực tiễn từ cực hiếm ngày vẫn qua, so với số tháng qua MONTH().

SELECT DISTINCT (MONTHNAME(birthday)) AS month, COUNT(*) AS number_of_birthdaysFROM friendsGROUP BY monthKết trái

3.4 xử lý ngày

Khi bạn có thêm một người các bạn mới, bạn vui vẻ nhập tin tức người chúng ta ấy vào Nhưng, ngày sinh nhật làm việc dạng chuỗi như 'ngày 10tháng 08 năm 2017'.

SELECT STR_TO_DATE("August 10 2017", "%M %d %Y")

Giải thích một chút nào

%M %d,%Y được định dạng là %M - tên tháng. %d - Số ngày trong tháng. %Y - 4 chữ số năm.

3.5 Ngày có giá trị NOT NULL

để bình chọn nếu cực hiếm ngày không hẳn là NULL.

Xem thêm: Bài Soạn Văn Lớp 7 Ngẫu Nhiên Viết Nhân Buổi Mới Về Quê, Soạn Bài Ngẫu Nhiên Viết Nhân Buổi Mới Về Quê

3.5 mang ra những ngày trong tầm ngày tự ngày... Mang lại ngày ...

4. Kết luận

Thông qua những ví dụ thực tế trên, mong có thể giúp họ có cái nhìn được rõ hơn với bài toán xử lí ngày tháng bằng câu lệnh SQL. Nội dung bài viết của mình vẫn tồn tại nhiều thiếu hụt sót rất ước ao nhận được sự góp ý góp phần của chúng ta để bài viết được triển khai xong hơn

Tài liệu tham khảo :

https://www.w3resource.com/mysql/advance-query-in-mysql/date-calculation.php

https://www.w3school.com https://codeburst.io/handy-mysql-date-functions-with-examples-93dbd79849c5