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

     

Vừa qua bản thân vừa có 1 task tương quan đến việc giám sát và đo lường và cập nhật ngày tháng bằng câu lệnh SQL. Trong vượt trình tò mò và thực hiền đức mình bao gồm rút ra 1 chút tay nghề hay giỏi nên hôm nay muốn phân chia sẽ cùng phần nhiều người, hy vọng có cầm cố giúp các bạn khi cần thiết

*

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

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

MySQL có các loại tài liệu sau cho một ngày hoặc quý giá ngày / thời gian trong cửa hàng 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 ngày hoặc quý hiếm ngày / thời gian 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ố ít duy nhất2. Các funtion thường 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 tại của sản phẩm tính
YEAR()Trả về năm của ngày đã chỉ định
MONTH()Trả về tháng của ngày vẫn 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 từ biểu thức datetime
DATEDIFF()Trả về ngày trường đoản cú 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
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

.......Ngoài ra còn không hề ít hàm khác nhưng lại mình xin phép trình bày một số trong những hàm mà chúng ta hay sử dụng như trên.

3. Tính toán3.1 Còn bao nhiêu ngày nữa ?

Câu hỏi này chắc chắn chạy qua đầu của chúng ta ít nhất là mặt hàng tuần nếu không nói là hàng ngày

*

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

DATEDIFF() trừ hai 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à tác dụng là trên đây :

*

sau khi mang được số ngày, bạn có nhu cầu xem tín đồ đó trong năm này bao nhiêu tuổi

*
bạn chỉ cần chia cho 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 được sử dụng để gia công tròn kết quả thành một số trong những nguyên.

Bạn cũng có thể tính toán tuổi của friends bằng cách sau

SELECT first_name, last_name, (YEAR(CURDATE()) - YEAR(birthday)) - (RIGHT(CURDATE(), 5) RIGHT(birthday, 5)) AS yearsFROM friendsGiải phù hợp 1 chút :

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

*

Sau khi select được số tuổi của các friend vào khoa trong danh mục friend của mình bạn có nhu cầu sắp xếp số tuổi theo máy tự giảm dần hoặc tăng nhiều thì họ chỉ cần

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

3.2 chúng ta không khi nào quên sinh nhật đề nghị không?Giả sử bọn họ muốn biết ngày trong tuần là sinh nhật của một tín đồ bạn. Chắc rằng chúng tôi nhìn vào friends bàn mỗi tuần và hiểu rằng ai đang sinh nhật, ví như có, và ghi chú ngày lúc này là ngày gì.

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

1 = công ty nhật,

2 = thứ hai, v.v.

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

Xem thêm: Luận Tử Vi Tuổi Tân Dậu Năm 2021 Nam Mạng Sinh Năm 1981, Tử Vi Tuổi Tân Dậu 2021

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" kết thúc AS day_of_weekFROM friendsLIMIT 10Awesome! Điều đó vận động hoàn hảo.Nhưng nó hơi dài để mang tên một ngày trong tuần.

MySQL gồm một function DAYNAME() cân xứng cho vấn đề này.Đơn giản chỉ cần cung cấp cho cho nó một giá trị ngày và bạn 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 sử dụng để mang các quý hiếm số theo tháng xuất phát điểm từ một giá trị tháng ngày cung cấp. Như trong một nghĩa (tháng 1) cùng 12 đến (tháng 12) với đa số thứ không giống ở giữa.

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

*
Vậy liệu bạn có thể lấy thương hiệu của tháng ko ? câu trả lởi chắc chắn là là bao gồm rồi

Sử dụng hàm MONTHNAME(), mang tên của Tháng thực tế từ giá trị ngày đã qua, so với số mon qua MONTH().

SELECT DISTINCT (MONTHNAME(birthday)) AS month, COUNT(*) AS number_of_birthdaysFROM friendsGROUP BY monthKết quả

*

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 bạn ấ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 yêu thích một 1 chút nào

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

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

để soát sổ nếu cực hiếm ngày chưa hẳn là NULL.

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

Xem thêm: Những Bài Hát Yêu Đơn Phương Hay Nhất Với Tâm Trạng Người Yêu Đơn Phương

3.5 mang ra những ngày trong vòng ngày trường đoản cú ngày... đến ngày ...
*

4. Kết luận

Thông qua những ví dụ thực tế trên, mong hoàn toàn có thể giúp chúng ta có cái nhìn thấy rõ hơn với việc 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 thốn sót rất muốn nhận được sự góp ý góp sức của các bạn để nội dung bài viết được hoàn thiện hơn

Tài liệu xem thêm :

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

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