TRUY VẤN NGÀY THÁNG TRONG SQL

Kiểu tài liệu ngày tháng (date/time) rất khác phần đa vẻ bên ngoài dữ liệu ngulặng thuỷ thường thì đề xuất hay gây trở ngại đến chúng ta xây dựng viên nhất là khi thao tác với các câu lệnh mysql, vào bài viết này mình vẫn tổng đúng theo với khuyên bảo các bạn thao tác cùng với dạng hình date/time trong mysql


*

1. Kiểu dữ liệu ngày SQL.

Bạn đang xem: Truy vấn ngày tháng trong sql

MySQL gồm các loại tài liệu sau cho ngày hoặc quý hiếm ngày / thời hạn trong các đạ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 bao gồm các loại tài liệu sau cho 1 ngày hoặc quý hiếm ngày / thời hạn trong cơ sở dữ liệu:

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

2. Các funtion thường xuyên sử dụng.

TênChức năng
DATE()Trả về ngày từ biểu thức datetime
CURDATE()Trả về ngày hiện giờ của máy tính
YEAR()Trả về năm của ngày vẫn chỉ định
MONTH()Trả về tháng của ngày đang chỉ định
DAY()Trả về ngày của ngày được chỉ định
TIME()Trả về tiếng của ngày được chỉ định
DATE()Trả về ngày tự biểu thức datetime
DATE_ADD()Trả về ngày trường đoản cú biểu thức datetime
DATEDIFF()Trả về ngày tự biểu thức datetime
DATE_SUB()Trả về ngày từ biểu thức datetime
NOW()Trả về thời gian hiện tại tại
DAYOFWEEK()Trả về ngày của tuần
DAYNAME()Trả về thương hiệu ngày
MONTHNAME()Trả về tên tháng
STR_TO_DATE()Format chuỗi về ngày

....... Trong khi còn không hề ít hàm khác cơ mà bản thân xin phxay trình diễn một trong những hàm cơ mà chúng ta hay được sử dụng nlỗi bên trên.

3. Tính toán

3.1 Còn từng nào ngày nữa ?

Câu hỏi này chắc chắn chạy qua đầu của bọn họ tối thiểu là mặt hàng tuần nếu như không nói là sản phẩm ngày

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

DATEDIFF() trừ nhị quý giá ngày cùng trả về số ngày giữa chúng.

SELECT DATEDIFF(CURDATE(), birthday) AS days_difference FROM friends LIMIT 5;với kết quả là đây :

*

sau thời điểm mang được số ngày, bạn muốn xem tín đồ đó năm nay bao nhiêu tuổi bạn chỉ việc phân chia mang lại 365 ngày là ra hiệu quả số tuổi.

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

*

Hàm ROUND()toán học được áp dụng để làm tròn tác dụng thành một số nguyên ổn.

quý khách hàng 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 mê thích 1 chút :

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

*

Sau khi select được số tuổi của những friover trong khoa trong list friover của bản thân mình bạn có nhu cầu thu xếp số tuổi theo trang bị trường đoản cú bớt dần hoặc tăng nhiều thì bọn họ chỉ cần

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

3.2 Chúng ta ko lúc nào quên sinch nhật nên không?

Giả sử bọn họ hy vọng biết ngày vào tuần là sinh nhật của một người bạn. Có lẽ chúng tôi chú ý vào friends bàn mỗi tuần với hiểu rằng ai đã sinc nhật, nếu có, cùng ghi chụ ngày hôm nay là ngày gì.

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

1 = Chủ nhật,

2 = Thđọng hai, v.v.

Chúng ta rất có thể đặt một CASE biểu thức nhằm áp dụng tại chỗ này.

Xem thêm:

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 kia hoạt động tuyệt vời nhất. Nhưng nó hơi dài để lấy tên 1 ngày trong tuần.

MySquốc lộ gồm một function DAYNAME() phù hợp mang đến việc này. Đơn giản chỉ việc cung ứng cho nó một quý giá ngày với chúng ta là vàng.

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

3.3 Xử lí tháng

Các hàm MONTH() được thực hiện để lấy các quý giá số theo mon từ 1 quý giá tháng ngày cung cấp. Như trong một nghĩa (tháng 1) cùng 12 mang lại (mon 12) với mọi sản phẩm không giống trọng tâm.

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

*

Vậy liệu chúng ta có thể lấy tên của mon ko ? câu trả lởi chắc chắn là gồm rồi

Sử dụng hàm MONTHNAME(), rước thương hiệu của Tháng thực tiễn từ quý giá ngày đã qua, đối với số Tháng qua MONTH().

SELECT DISTINCT (MONTHNAME(birthday)) AS month, COUNT(*) AS number_of_birthdaysFROM friendsGROUPhường BY monthKết quả

*

3.4 Xử lí ngày

Khi các bạn bao gồm thêm một bạn các bạn bắt đầu, các bạn vui mắt nhập ban bố người bạn ấy vào Nhưng, ngày sinch nhật nghỉ ngơi dạng chuỗi như 'ngày 10mon 08 năm 2017'.

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

*

Giải đam mê một chút nào

%M %d,%Y được định hình là %M - Tên mon. %d - Số ngày trong tháng. %Y - 4 chữ thời gian.

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

để đánh giá nếu cực hiếm ngày chưa phải là NULL.

SELECT first_name, last_name, birthdayFROM friendsWHERE birthday IS NOT NULL;Câu lệnh MySquốc lộ sống trên đang lọc những mặt hàng gồm ngày birthday KHÔNG bắt buộc là NULL.

3.5 Lấy ra rất nhiều ngày trong khoảng ngày từ ngày... cho ngày ...
*

4. Kết luận

Thông qua những ví dụ thực tế trên, mong muốn hoàn toàn có thể góp họ bao gồm cái nhìn thấy rõ hơn cùng với bài toán xử lí tháng ngày bởi câu lệnh SQL. Bài viết của bản thân vẫn còn đấy những thiếu sót vô cùng hy vọng nhận được sự góp ý góp sức của các bạn nhằm bài viết được hoàn thiện 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