So sánh giờ trong sql

So sánh 2 ngày trong sql server làm sao ạ
Ví dụ muốn xuất dành sách hàng hóa bán trong tháng 6/2017

Bạn làm kiểu như thế này là được

Select * from bangdulieu where truongngay >= ‘2018-06-01’ and truongngay< dateadd[day,1,‘2018-06-30’]

…where column < ‘1-7-2017’ and column > ‘31-5-2017’

Bạn thử câu truy vấn này xem
SELECT * FROM PRODUCT WHERE NGAYBAN LIKE ‘2017-06%’

Home Categories FAQ/Guidelines Terms of Service Privacy Policy

Ở bài viết này, Quantrimang xin liệt kê tất cả các hàm quan trọng dùng để xử lý Date/Time trong SQL. Danh sách đưa ra dựa trên MySQL RDBMS.

Các hàm xử lý date/time

STTHÀMMÔ TẢ
1ADDDATE[]Thêm một khoảng thời gian vào date
2ADDTIME[]Thêm một khoảng thời gian vào time
3CONVERT_TZ[]Chuyển đổi múi giờ
4CURDATE[]Trả về ngày hiện tại
5CURRENT_DATE[]Trả về ngày hiện tại
6CURRENT_TIME[]Trả về thời gian hiện tại
7CURRENT_TIMESTAMP[]Trả về ngày và thời gian hiện tại
8CURTIME[]Trả về thời gian hiện tại
9DATE_ADD[]Cộng thời gian
10DATE_FORMAT[]Định dạng giá trị thời gian
11DATE_SUB[]Trừ thời gian
12DATE[]Trả về phần ngày của biểu thức thời gian
13DATEDIFF[]Trả về chênh lệch giữa hai giá trị thời gian
14DAY[]Trả về thứ tự ngày trong tháng [từ 0 đến 31]
15DAYNAME[]Trả về tên của ngày trong tuần
16DAYOFMONTH[]Trả về thứ tự ngày trong tháng [từ 0 đến 31]
17DAYOFWEEK[]Trả về chỉ số ngày trong tuần [1 = Sunday, 2 = Monday... 7 = Saturday]
18DAYOFYEAR[]Trả về thứ tự ngày trong năm [từ 1 đến 366]
19EXTRACTTrích giá trị thời gian từ biểu thức ban đầu
20FROM_DAYS[]Chuyển đổi một số thành giá trị ngày
21FROM_UNIXTIME[]Trả về ngày đại diện cho tham số Unixtime ban đầu
22HOUR[]Trả về phần giờ từ biểu thức thời gian
23LAST_DAY[]Trả về giá trị tương ứng cho ngày cuối cùng của tháng
24LOCALTIME[]Trả về ngày giờ hiện tại
25LOCALTIMESTAMP[]Trả về ngày giờ hiện tại
26MAKEDATE[]Trả về một ngày với các tham số truyền vào
27MAKETIME[]Trả về giá trị thời gian với các tham số truyền vào
28MICROSECOND[]Trả về microsecond từ biểu thức ban đầu
29MINUTE[]Trả về giá trị phút từ biểu thức thời gian
30MONTH[]Trả về giá trị tháng từ biểu thức thời gian
31MONTHNAME[]Trả về tên tháng từ biểu thức thời gian
32NOW[]Trả về ngày giờ hiện tại
33PERIOD_ADD[]Thêm một khoảng thời gian cho tháng trong năm
34PERIOD_DIFF[]Trả về số tháng giữa các khoảng thời gian
35QUARTER[]Trả về giá trị quý từ biểu thức thời gian
36SEC_TO_TIME[]Chuyển đổi số giây sang định dạng 'HH: MM: SS'
37SECOND[]Trả về giá trị giây từ biểu thức thời gian
38STR_TO_DATE[]Chuyển đổi một chuỗi thành một ngày
39SUBDATE[]Trừ một khoảng thời gian từ date truyền vào
40SUBTIME[]Trừ hai khoảng thời gian
41SYSDATE[]Trả về ngày giờ hiện tại
42TIME_FORMAT[]Định dạng giá trị thời gian
43TIME_TO_SEC[]Trả về số giây được chuyển đổi từ tham số ban đầu
44TIME[]Trả về giá trị thời gian từ biểu thức ban đầu
45TIMEDIFF[]Trả về chênh lệch giữa hai giá trị thời gian
46TIMESTAMP[]Trả về biểu thức datetime
47TIMESTAMPADD[]Cộng khoảng thời gian được chỉ định vào tham số ban đầu
48TIMESTAMPDIFF[]Trả về một số nguyên thể hiện sự chênh lệch thời gian giữa hai biểu thức
49TO_DAYS[]Trả về số ngày giữa giá trị thời gian date và năm 0
50UNIX_TIMESTAMP[]Trả về số giây theo Unix timestamp từ biểu thức ban đầu
51UTC_DATE[]Trả về ngày UTC hiện tại
52UTC_TIME[]Trả về giờ UTC hiện tại
53UTC_TIMESTAMP[]Trả về ngày giờ UTC hiện tại
54WEEKDAY[]Trả về chỉ số ngày trong tuần [0 = Thứ Hai, 1 = Thứ Ba... 6 = Chủ Nhật]
55WEEKOFYEAR[]Trả về chỉ số tuần trong năm của biểu thức thời gian
56YEAR[]Trả về năm tương ứng của tham số ban đầu

Các kiểu dữ liệu ngày tháng trong SQL

MySQL đi kèm với các kiểu dữ liệu để lưu trữ giá trị ngày hoặc ngày tháng/thời gian trong cơ sở dữ liệu:

  • DATE – định dạng YYYY-MM-DD
  • DATETIME – định dạng: YYYY-MM-DD HH:MI:SS
  • TIMESTAMP – định dạng: YYYY-MM-DD HH:MI:SS
  • YEAR – định dạng YYYY hoặc YY

Với:

  • Y là năm
  • M là tháng
  • D là ngày
  • H là giờ
  • MM là phút
  • SS là giây

YYYY là năm được lưu dưới dạng bốn chữ số, YY là năm được lưu dưới dạng hai chữ số; MM là lưu tháng dưới dạng hai chữ số, ví dụ tháng 7 sẽ là 07]:

Trong phần tiếp theo, Quan trimang sẽ cùng bạn tìm hiểu cách sử dụng tất cả các hàm nói trên với cú pháp và những ví dụ cụ thể, các bạn nhớ theo dõi nhé.

Bài trước: Toán tử đại diện WILDCARD trong SQL

Bài tiếp: Hàm xử lý DATE/TIME trong SQL - Phần 2

So sánh thời gian trong sql

-

Kiểu dữ liệu ngày tháng [date/time] không giống những kiểu dữ liệu nguyên thuỷ thông thường nên thường gây khó khăn cho các bạn lập trình viên nhất là khi thao tác với các câu lệnh mysql, trong bài viết này mình sẽ tổng hợp và hướng dẫn các bạn làm việc với kiểu date/time trong mysql



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

MySQL có các loại dữ liệu sau cho một ngày hoặc giá trị 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 có các loại dữ liệu sau cho một ngày hoặc giá trị ngày / thời gian trong cơ sở 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 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 máy tính
YEAR[]Trả về năm của ngày đã chỉ định
MONTH[]Trả về tháng của ngày đã 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 từ 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ề tên ngày
MONTHNAME[]Trả về tên tháng
STR_TO_DATE[]Format chuỗi về ngày

....... Ngoài ra còn rất nhiều hàm khác nhưng mình xin phép trình bày một số hàm mà chúng ta hay sử dụng như 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 chúng ta ít nhất là hàng tuần nếu không nói là hàng ngày

MySQL giải quyết loại câu hỏi này với hàm DATEDIFF[]

DATEDIFF[] trừ hai giá trị ngày và trả về số ngày giữa chúng.

SELECT DATEDIFF[CURDATE[], birthday] AS days_difference FROM friends LIMIT 5;và kết quả là đây :


sau khi lấy được số ngày, bạn muốn xem người đó năm nay 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 để làm tròn kết quả thành một số 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 thích 1 chút :

Hàm CURDATE [] trả về ngày hiện tại của máy tính, hàm YEAR [] trả về năm của ngày đã chỉ định, hàm MONTH [] trả về tháng của ngày đã chỉ định, hàm DAY [] trả về ngày của ngày được chỉ định Hàm RIGHT [] trả về số lượng ký tự như được chỉ định trong hàm từ chuỗi hoặc ngày đã cho. Phần của biểu thức so sánh các trả về từ hàm RIGHT [] ước tính 1 hoặc 0. kết quả là :



Sau khi select được số tuổi của các friend trong khoa trong list friend của mình bạn muốn sắp xếp số tuổi theo thứ tự giảm dần hoặc tăng dần thì chúng ta chỉ cần

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

3.2 Chúng ta không bao giờ quên sinh nhật phải không?

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

Các DAYOFWEEK[]hàm trả về một giá trị số cho tham số giá trị ngày tháng. Những con số đó đại diện cho:

1 = Chủ nhật,

2 = Thứ 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" END AS day_of_weekFROM friendsLIMIT 10

Awesome! Điều đó hoạt động hoàn hảo. Nhưng nó khá dài để lấy tên 1 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 cấp 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 để lấy các giá trị số theo tháng từ một giá trị ngày tháng cung cấp. Như trong 1 nghĩa [tháng 1] và 12 cho [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 vấn này, hàm COUNT[] đến số người có ngày sinh trong mỗi tháng :



Vậy liệu chúng ta có thể lấy tên 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[], lấy tên của Tháng thực tế từ giá trị 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

Khi bạn có thêm 1 người bạn mới, bạn vui vẻ nhập thông tin người bạn ấy vào Nhưng, ngày sinh nhật ở 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 định dạng là %M - Tên tháng. %d - Số ngày trong tháng. %Y - 4 chữ số năm.

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

để kiểm tra nếu giá trị ngày không phải 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 Lấy ra những ngày trong khoảng ngày từ ngày... đến ngày ...

4. Kết luận

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

Tài liệu tham khảo :

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

//www.w3school.com //codeburst.io/handy-mysql-date-functions-with-examples-93dbd79849c5

Video liên quan

Chủ Đề