.: Nguoicodonvn2008.info - Cõi lòng người cô đơn :.

https://www.nguoicodonvn2008.info

Hàm xử lý DATE/TIME trong SQL - Phần 1

Hàm xử lý DATE/TIME trong SQL - Phần 1

Date trong SQL là một hàm phổ biến. Ngoài hàm date trong SQL, bài viết sẽ cho bạn biết cả cách dùng truy vấn thời gian.

 

SQL là ngôn ngữ lập trình không còn xa lạ với nhiều người. Học và thực hành nó không khó một khi bạn đã nắm được các kiến thức cơ bản. Nhìn chung, làm việc với cơ sở dữ liệu khá đơn giản vì người dùng cần biết các truy vấn và từ khóa cơ bản nên được sử dụng để truy xuất, cập nhật và xóa dữ liệu trong database. SQL cho phép người dùng lưu trữ dữ liệu có cấu trúc (dữ liệu ở dạng hàng và cột) và cung cấp các truy vấn đơn giản để làm việc trên đó.

Xử lý dữ liệu ngày và giờ trong SQL là điều cần thiết cho nhiều hoạt động cơ sở dữ liệu. SQL cung cấp nhiều hàm ngày và giờ giúp người dùng làm việc với các giá trị ngày tháng, thực hiện tính toán và định dạng chúng khi cần. Cho dù bạn đang thêm khoảng thời gian vào ngày, trích xuất các phần của ngày hoặc định dạng đầu ra, việc thành thạo các hàm date/time của SQL rất quan trọng để làm việc với dữ liệu thời gian trong cơ sở dữ liệu.

Trong bài viết này, chúng ta sẽ khám phá các hàm ngày date & time của SQL phổ biến nhất, bao gồm các ví dụ và trường hợp sử dụng cho từng hàm.

Hầu hết lập trình viên đều cần làm việc với kiểu dữ liệu date/time trong SQL. Đôi khi, đây có thể là một vấn đề phức tạp, khó giải quyết với lập trình viên SQL còn thiếu kinh nghiệm. Giả sử bạn có bảng Sản phẩm với một cột thời gian (timestamp). Nó tạo ra từng mốc thời gian cho từng đơn hàng của khách. Khi xử lý bảng này, có thể bạn phải đối mặt với những vấn đề sau:

  • Không chèn được dữ liệu vào bảng Sản phẩm vì ứng dụng cố gắng chèn dữ liệu ở định dạng ngày tháng khác.
  • Giả sử bạn có dữ liệu trong bảng ở định dạng YYYY-MM-DD hh:mm: ss. Bạn có báo cáo doanh thu hàng ngày và trong đó, bạn muốn nhóm dữ liệu theo ngày tháng. Bạn muốn có dữ liệu trong báo cáo ở định dạng YYYY-MM-DD.

Đây chỉ là một trong số nhiều trường hợp phổ biến khi lập trình bằng SQL nhưng không có định dạng ngày tháng theo yêu cầu. Lúc này, thật khó thay đổi thuộc tính bảng để đáp ứng từng điều kiện. Trong trường hợp này bạn cần biết cách dùng hàm thời gian trong SQL.

Ngày tháng hay Date là một trong số chức năng quan trọng nhất được sử dụng ở SQL, nhưng đối với những người mới tiếp cận ngôn ngữ lập trình này thì hơi khó hiểu vì có nhiều định dạng ngày tháng có thể được lưu trữ trong cơ sở dữ liệu và ở các định dạng khác nhau mà người dùng muốn truy xuất nó theo yêu cầu. Trong SQL, DateTime thường được sử dụng để lưu trữ cả giá trị ngày và giờ tại một thời điểm trong một cột.

Dưới đây là chi tiết các hàm ngày tháng hay date trong SQL.

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

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

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

Theo dõi tạo hàng hoặc thời gian chỉnh sửa

Trong khi làm việc với database của một ứng dụng lớn, bạn thường cần phải lưu trữ thời gian tạo bản ghi hoặc lần chỉnh sửa cuối cùng trong database, ví dụ, lưu ngày & giờ khi người dùng đăng ký, hoặc khi người dùng update mật khẩu gần nhất…

Trong MySQL, bạn có thể dùng hàm NOW() để chèn dấu thời gian hiện tại như sau:

-- Syntax for MySQL Database 
INSERT INTO users (name, birth_date, created_at)
VALUES ('Bilbo Baggins', '1998-04-16', NOW());

Tuy nhiên, nếu không muốn tự tay chèn ngày và giờ hiện tại, bạn có thể chỉ dùng thuộc tính auto-initialization và auto-update của TIMESTAMP và DATETIME.

Để gắn thuộc tính tự động, xác định mệnh đề DEFAULT CURRENT_TIMESTAMP và ON UPDATE CURRENT_TIMESTAMP trong định nghĩa cột như sau:

-- Syntax for MySQL Database 
CREATE TABLE users (
    id INT(4) NOT NULL PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50) NOT NULL UNIQUE,
    birth_date DATE NOT NULL,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

SQL cung cấp hàm date & time nhằm đơn giản hóa công việc của bạn khi xử lý dữ liệu thời gian. Cho dù bạn đang trích xuất các phần cụ thể của ngày, thêm hoặc trừ các khoảng thời gian hoặc định dạng các giá trị ngày-giờ, việc thành thạo các hàm này có thể cải thiện đáng kể khả năng truy vấn và thao tác dữ liệu liên quan hiệu quả.

Trong phần tiếp theo, Quantrimang 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é.

Nguồn tin: Quantrimang.com:

Bạn đã không sử dụng Site, Bấm vào đây để duy trì trạng thái đăng nhập. Thời gian chờ: 60 giây