So sánh thời gian trong sql

  -  

Kiểu dữ liệu ngày mon (date/time) rất khác những kiểu tài liệu nguyên thuỷ thường thì nên thường gây khó khăn cho chúng ta lập trình viên độc nhất vô nhị là khi làm việc với những câu lệnh mysql, trong nội dung bài viết này mình đã tổng hợp và hướng dẫn chúng ta làm việc với hình trạng date/time trong mysql


*

1. Kiểu dữ liệu ngày SQL.Bạn vẫn xem: So sánh thời gian trong sql

MySQL có những loại dữ 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:SSTIMESTAMP - format: YYYY-MM-DD HH:MI:SSYEAR - format YYYY hoặc YY

Sql server có các loại tài liệu sau cho 1 ngày hoặc quý hiếm ngày / thời gian trong các đạ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: một số duy nhất

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

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

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 đang chỉ định
MONTH()Trả về mon của ngày đã 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ự biểu thức datetime
DATEDIFF()Trả về ngày tự 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

....... Trong khi còn không ít hàm khác nhưng mà mình xin phép trình bày một số trong những hàm mà bọn họ hay áp dụng như 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 chúng ta ít độc nhất là sản phẩm tuần còn nếu không nói là sản phẩm 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à 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 mang đượ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 cho 365 ngày là ra tác dụng 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 tác dụng thành một vài 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) Giải say đắm 1 chút :

Hàm CURDATE () trả về ngày hiện nay tại của sản phẩm tính, hàm YEAR () trả về năm của ngày vẫn chỉ định, hàm MONTH () trả về tháng của ngày vẫn chỉ định, hàm DAY () trả về ngày của ngày được chỉ định và hướng dẫn Hàm RIGHT () trả về số lượng ký tự như được hướng đẫn 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ề từ bỏ hàm RIGHT () cầu tính 1 hoặc 0. Kết quả là :


*

Sau khi select được số tuổi của các friend vào khoa trong list friend của mình bạn muốn sắp xếp số tuổi theo trang bị tự bớt dần hoặc tăng ngày một nhiều 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 lúc nào quên sinh nhật yêu cầu không?

Giả sử chúng ta muốn biết ngày vào tuần là sinh nhật của một bạn bạn. Có lẽ chúng tôi nhìn vào friends bàn hàng tuần và hiểu rằng ai đang sinh nhật, nếu như có, và ghi chú ngày từ bây giờ là ngày gì.

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

1 = nhà nhật,

2 = máy hai, v.v.

Chúng ta có thể đặt một CASE biểu thức để sử dụng ở đây.

Xem thêm: Công Ty Thiết Kế Web Chuyên Nghiệp Uy Tín Chuẩn Seo Tại Tphcm ✅

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 10

Awesome! Đ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 có một function DAYNAME() phù hợp cho việc này. Đơn giản chỉ cần cung cung cấp cho nó một quý giá ngày và các bạn 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 để lấy các quý hiếm số theo tháng từ 1 giá trị ngày tháng cung cấp. Như trong 1 nghĩa (tháng 1) cùng 12 mang đế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 tầm nã vấn này, hàm COUNT() mang đến số người có ngày sinh trong mỗi 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à là có rồi

Sử dụng hàm MONTHNAME(), lấy tên của Tháng thực tiễn từ quý giá ngày sẽ qua, đối 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 các bạn có thêm một người chúng ta mới, các bạn vui vẻ nhập tin tức người các 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 thích một chút nào

%M %d,%Y được format là %M - thương hiệu 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

để đánh giá nếu quý hiếm ngày chưa hẳn là NULL.

Xem thêm: Tại Sao Lại Gọi Là Cuộc Cách Mạng Thời Đá Mới, Tại Sao Lại Gọi Là “Cuộc Cách Mạng Thời Đá Mới”

3.5 kéo ra những ngày trong khoảng ngày trường đoản cú ngày... Mang lại ngày ...

4. Kết luận

Thông qua các ví dụ thực tiễn trên, mong hoàn toàn có thể giúp họ có cái nhìn rõ hơn với câu hỏi xử lí ngày tháng bằng câu lệnh SQL. 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 phần của chúng ta để bài viết được hoàn thiện 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