Vừa qua mình vừa có một task tương quan đến việc đo lường và thống kê và xử lý ngày tháng bởi câu lệnh SQL. Trong vượt trình khám phá và thực thánh thiện mình bao gồm rút ra 1 chút kinh nghiệm hay hay nên hôm nay muốn phân chia sẽ cùng phần đông người, muốn có nạm giúp chúng ta khi quan trọng

*

1. Kiểu tài liệu ngày SQL.

Bạn đang xem: Hàm thời gian trong sql

MySQL có những 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 có những loại tài liệu sau cho một ngày hoặc quý giá 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ố ít duy nhất2. Các funtion hay 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 nay tại của máy tính
YEAR()Trả về năm của ngày vẫn chỉ định
MONTH()Trả về mon của ngày sẽ 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ừ bỏ biểu thức datetime
DATE_SUB()Trả về ngày trường đoản cú 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

.......Ngoài ra còn không ít hàm khác dẫu vậy mình xin phép trình bày một trong những hàm mà họ hay thực hiện như trên.

3. Tính toán3.1 Còn từng nào ngày nữa ?

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

*

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

DATEDIFF() trừ hai quý hiếm ngày với trả về số ngày giữa chúng.

SELECT DATEDIFF(CURDATE(), birthday) AS days_difference FROM friends LIMIT 5;và công dụng là đây :

*

sau khi lấy được số ngày, bạn muốn xem bạn đó năm nay bao nhiêu tuổi

*
bạn chỉ việc chia mang đến 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 để làm tròn hiệu quả thành một vài nguyên.

Bạn cũng rất 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 thích hợp 1 chút :

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

*

Sau khi select được số tuổi của những friend trong khoa trong list friend của mình bạn muốn sắp xếp số tuổi theo đồ vật tự sút dần hoặc tăng vọt thì bọn họ 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 bọn họ không khi nào quên sinh nhật cần không?Giả sử họ muốn biết ngày vào tuần là sinh nhật của một tín đồ bạn. Chắc hẳn rằng chúng tôi quan sát vào friends bàn hàng tuần và biết được ai sẽ sinh nhật, nếu có, và ghi chú ngày lúc này là ngày gì.

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

1 = nhà nhật,

2 = sản phẩm 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: “Nhà Sáng Lập Thẩm Mỹ Viện Thu Lâm Cơ Sở 2, Thẩm Mỹ Viện Thu Lâ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" 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 để đưa tên một ngày trong tuần.

MySQL bao gồm một function DAYNAME() phù hợp cho việc 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 date tháng

Các hàm MONTH() được sử dụng để đưa các quý giá 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 mọi thứ khác ở 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() đến số người dân có ngày sinh trong những tháng :

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

Sử dụng hàm MONTHNAME(), rước tên của Tháng thực tế 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 quả

*

3.4 up load ngày

Khi bạn có thêm 1 người bạn mới, chúng ta vui vẻ nhập thông tin người chúng ta ấy vào Nhưng, ngày sinh nhật sống 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 ham mê 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

để bình chọn nếu quý hiếm ngày không phải là NULL.

SELECT first_name, last_name, birthdayFROM friendsWHERE birthday IS NOT NULL;Câu lệnh MySQL sống trên đang lọc các hàng có ngày birthday KHÔNG buộc phải là NULL.

3.5 lấy ra những 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 hoàn toàn có thể giúp họ có cái nhìn thấy rõ hơn với việc xử lí ngày tháng bởi câu lệnh SQL. Nội dung bài viết của mình vẫn còn đấy 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 triển khai xong 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