Kiểu dữ liệu ngày tháng (date/time) rất khác gần như vẻ bên ngoài tài liệu nguyên ổn thuỷ thường thì bắt buộc thường xuyên khiến khó khăn mang lại các bạn thiết kế viên độc nhất vô nhị là lúc thao tác làm việc với các câu lệnh mysql, vào bài viết này mình đã tổng hợp và gợi ý các bạn thao tác làm việc cùng với mẫu mã date/time trong mysql


*

1. Kiểu dữ liệu ngày Squốc lộ.

Bạn đang xem: So sánh thời gian trong sql

MySQL gồm những nhiều loại tài liệu sau cho ngày hoặc giá trị ngày / thời gian 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ó các các loại dữ liệu sau cho 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:SSSMALLDATETIME - format: YYYY-MM-DD HH:MI:SSTIMESTAMP - format: một số ít duy nhất

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

TênChức năng
DATE()Trả về ngày từ bỏ biểu thức datetime
CURDATE()Trả về ngày hiện thời của dòng sản phẩm tính
YEAR()Trả về năm của ngày đang chỉ định
MONTH()Trả về mon của ngày đang 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ừ biểu thức datetime
DATE_ADD()Trả về ngày từ bỏ biểu thức datetime
DATEDIFF()Trả về ngày từ bỏ biểu thức datetime
DATE_SUB()Trả về ngày từ bỏ 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

....... Dường như còn không ít hàm không giống mà lại bản thân xin phép trình bày một số hàm nhưng mà chúng ta hay sử dụng nhỏng bên 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 chắn chạy qua đầu của họ tối thiểu là hàng tuần nếu như không nói là hàng ngày

MySquốc lộ xử lý các loại câu hỏi này với hàm DATEDIFF()

DATEDIFF() trừ hai cực hiếm ngày cùng trả về số ngày giữa chúng.

SELECT DATEDIFF(CURDATE(), birthday) AS days_difference FROM friends LIMIT 5;cùng hiệu quả là đây :

*

sau thời điểm lấy được số ngày, bạn có nhu cầu xem người đó trong năm này bao nhiêu tuổi chúng ta chỉ việc phân 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()tân oán học được áp dụng để gia công tròn tác dụng thành một vài nguyên ổn.

Bạn cũng rất có thể tính tân oá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 ít :

Hàm CURDATE () trả về ngày bây giờ của máy tính, hàm YEAR () trả về năm của ngày vẫn hướng dẫn và chỉ định, hàm MONTH () trả về mon của ngày sẽ hướng đẫn, 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ỏng được chỉ định vào hàm tự chuỗi hoặc ngày vẫn mang đến. 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 Lúc select được số tuổi của những frikết thúc vào khoa vào danh sách friover của bản thân mình bạn có nhu cầu bố trí số tuổi theo lắp thêm tự giảm dần dần hoặc tăng vọt thì chúng ta chỉ cần

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

3.2 Chúng ta không bao giờ quên sinc nhật yêu cầu không?

Giả sử bọn họ hy vọng biết ngày trong tuần là sinh nhật của một người các bạn. Có lẽ công ty chúng tôi nhìn vào friends bàn mỗi tuần cùng biết được ai vẫn sinh nhật, ví như tất cả, và ghi crúc ngày bây giờ là ngày gì.

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

1 = Chủ nhật,

2 = Thứ đọng nhì, v.v.

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

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 tuyệt vời và hoàn hảo nhất. Nhưng nó khá lâu năm để lấy tên 1 ngày vào tuần.

MySQL gồm một function DAYNAME() cân xứng cho việc này. Đơn giản chỉ cần hỗ trợ cho nó một quý hiếm ngày với chúng ta là kim cươ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 những quý hiếm số theo tháng từ một cực hiếm tháng ngày cung ứng. Như trong 1 nghĩa (tháng 1) cùng 12 mang đến (tháng 12) với đa số lắp thêm khác trọng điể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() đến số người dân có ngày sinc trong những tháng :

*

Vậy liệu chúng ta có thể mang tên của mon ko ? 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ừ bỏ quý giá ngày đã 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 Xử lí ngày

lúc chúng ta bao gồm thêm 1 người bạn new, các bạn háo hức nhập ban bố tín đồ các bạn ấy vào Nhưng, ngày sinch nhật sống dạng chuỗi nhỏng 'ngày 10mon 08 năm 2017'.

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

*

Giải say đắm một chút nào

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

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

nhằm đánh giá giả dụ quý giá 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 bên trên đã lọc các hàng bao gồm ngày birthday KHÔNG đề nghị là NULL.

Xem thêm: Tải Bài Hát Con Tim Mong Manh, Lời Bài Hát: Con Tim Mong Manh

3.5 Lấy ra đông đảo ngày trong vòng ngày từ thời điểm ngày... cho ngày ...
*

4. Kết luận

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

Tài liệu tìm hiểu thêm :

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