So sánh ngày tháng trong sql

Kiểu dữ liệu ngày tháng (date/time) rất khác gần như loại dữ liệu ngulặng thuỷ thông thường bắt buộc thường gây khó khăn cho các bạn lập trình sẵn viên tuyệt nhất là lúc thao tác cùng với các câu lệnh mysql, vào nội dung bài viết này mình vẫn tổng hòa hợp với hướng dẫn chúng ta làm việc với mẫu mã date/time trong mysql


*

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

You watching: So sánh ngày tháng trong sql

MySQL tất cả các nhiều loại dữ liệu sau cho 1 ngày hoặc quý hiếm ngày / thời gian trong cơ sở 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 gồm những loại tài liệu sau cho một ngày hoặc giá trị ngày / thời hạn 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: 1 số duy nhất

2. Các funtion hay sử 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 giờ của sản phẩm tính
YEAR()Trả về năm của ngày đã 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ờ 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ừ 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

....... Ngoài ra còn không ít hàm không giống dẫu vậy bản thân xin phép trình bày một trong những hàm mà lại họ thường được sử dụng nlỗi 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 bọn họ ít nhất là hàng tuần còn nếu như không nói là sản phẩm ngày

MySquốc lộ giải quyết và xử lý nhiều loại thắc mắc này cùng với hàm DATEDIFF()

DATEDIFF() trừ nhì giá trị ngày cùng trả về số ngày thân chúng.

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

*

sau khoản thời gian mang được số ngày, bạn có nhu cầu coi người kia trong năm này bao nhiêu tuổi chúng ta 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 thù học tập được sử dụng để gia công tròn công dụng thành một trong những nguim.

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 ưng ý 1 chút :

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

*

Sau Lúc select được số tuổi của những friover trong khoa trong danh mục frikết thúc của mình bạn có nhu cầu thu xếp số tuổi theo thiết bị từ bỏ bớt dần dần hoặc tăng dần đều thì bọn họ chỉ cần

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

3.2 Chúng ta ko bao giờ quên sinh nhật cần không?

Giả sử bọn họ mong muốn biết ngày vào tuần là sinch nhật của một bạn chúng ta. Có lẽ công ty chúng tôi quan sát vào friends bàn hàng tuần cùng hiểu rằng ai đã sinch nhật, ví như bao gồm, với ghi chụ ngày bây giờ là ngày gì.

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

1 = Chủ nhật,

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

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

See more: Cách Kiểm Tra Phần Cứng Máy Tính Hiệu Quả, Cách Kiểm Tra Phần Cứng Máy Tính Đơn Giản

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 đó hoạt động tuyệt vời và hoàn hảo nhất. Nhưng nó hơi dài để mang thương hiệu 1 ngày vào tuần.

MySQL có một function DAYNAME() phù hợp mang đến câu hỏi này. Đơn giản chỉ cần hỗ trợ cho nó một giá trị ngày và chúng ta là xoàn.

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 để lấy những cực hiếm số theo tháng từ một quý giá tháng ngày hỗ trợ. Như trong một nghĩa (mon 1) cùng 12 cho (mon 12) với tất cả sản phẩm công nghệ không giống trọng điểm.

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 có ngày sinh trong mỗi mon :

*

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

Sử dụng hàm MONTHNAME(), lấy tên của Tháng thực tiễn từ bỏ quý hiếm ngày vẫn qua, đối 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 các bạn có thêm một fan bạn mới, các bạn vui miệng nhập lên tiếng fan 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 mê say một ít nào

%M %d,%Y được format là %M - Tên tháng. %d - Số ngày hồi tháng. %Y - 4 chữ số năm.

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

nhằm kiểm soát nếu cực hiếm ngày không hẳn là NULL.

SELECT first_name, last_name, birthdayFROM friendsWHERE birthday IS NOT NULL;Câu lệnh MySQL sinh sống bên trên đã lọc những sản phẩm tất cả ngày birthday KHÔNG buộc phải là NULL.

See more: Bộ 84 Đề Thi Học Kì 2 Lớp 1 0 Đề Thi Học Kì 2 Môn Toán Lớp 1 Có Đáp Án

3.5 Lấy ra rất nhiều ngày trong vòng 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, muốn có thể giúp họ gồm cái nhìn được rõ hơn với vấn đề up date tháng ngày bởi câu lệnh SQL. Bài viết của bản thân mình vẫn còn các thiếu sót siêu mong nhận ra sự góp ý góp phần của các bạn nhằm 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