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

Hàm Curdate trong SQL, hàm Extract trong SQL chỉ là một phần nhỏ trong số hàm SQL bạn cần biết. Ở bài viết này, hãy cùng nhau tìm hiểu chi tiết hơn về hàm DATE/TIME được sử dụng phổ biến trong lập trình SQL nhé!

Các hàm xử lý Date/Time trong SQL

Nếu đang tìm kiếm hàm format date trong SQL thì bạn đã tới đúng địa chỉ. Bài viết sẽ cung cấp cho bạn những kiến thức cần biết về hàm ngày tháng và thời gian trong SQL.

Hàm DATE & TIME được tích hợp sẵn trong SQL, cho phép bạn thao tác và thực hiện những hoạt động theo giá trị ngày tháng và thời gian trong SQL. Những hàm này có thể được dùng trong các truy vấn SQL để thực hiện những hoạt động ngày tháng & thời gian khác nhau, chẳng hạn như lọc bản ghi dựa trên ngày tháng, tính sự khác biệt giữa ngày tháng và định dạng ngày tháng cho mục đích hiển thị.

Phần khó nhất khi làm việc với hàm các hàm date trong SQL là bạn cần đảm bảo định dạng ngày tháng định chèn, khớp với định dạng cột ngày tháng trong database.

Miễn là dữ liệu của bạn chỉ chứa phần ngày tháng, các truy vấn sẽ luôn hoạt động như mong đợi. Tuy nhiên, nếu bao gồm phần giờ, cách sử dụng nó sẽ phức tạp hơn.

Các kiểu hàm Date trong SQL

Hàm

Mô tả

NOW()

Trả về ngày & giờ hiện tại

CURDATE()

Trả về ngày hiện tại

CURTIME()

Trả về về giờ hiện tại

DATE()

Trích xuất phần ngày tháng trong biểu thức date hoặc date/time

EXTRACT()

Trả về một phần của ngày/giờ

DATE_ADD()

Thêm khoảng thời gian cụ thể cho ngày tháng

DATE_SUB()

Trừ một khoảng thời gian cụ thể tính từ ngày tháng hiện tại

DATEDIFF()

Trả về số ngày giữa hai ngày

DATE_FORMAT()

Hiện dữ liệu ngày giờ ở các định dạng khác nhau

SQL còn đi kèm với các kiểu dữ liệu sau để lưu trữ giá trị ngày hoặc ngày/giờ trong database:

  • 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

Hàm ADDDATE()

Có 2 dạng hàm ADDDATE:

  • ADDDATE(date, interval expr unit)
  • ADDDATE(expr, day)

1. ADDDATE(expr, day)

Thêm một khoảng thời gian nhất định vào tham số thời gian được truyền.

  • expr: khoảng thời gian bạn muốn thay đổi.
  • day: một số nguyên ngày bạn muốn thêm vào biểu thức expr.
mysql> SELECT ADDDATE('2019-01-02', 31);
+---------------------------------------------------------+
| ADDDATE('2019-01-02', 31)                               |
+---------------------------------------------------------+
| 2019-02-02                                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

2. ADDDATE(date, interval expr unit)

Khi đối số thứ hai được gọi dưới dạng INTERVAL, hàm ADDDATE() có chức năng giống hàm DATE_ADD().

Ví dụ hàm DATE_ADD sử dụng như này:

mysql> SELECT DATE_ADD('2019-01-02', INTERVAL 31 DAY);
+---------------------------------------------------------+
| DATE_ADD('2019-01-02', INTERVAL 31 DAY)                 |
+---------------------------------------------------------+
| 2019-02-02                                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Và ADDDATE có chức năng tương tự:

Hàm ADDDATE() trong SQL

Hàm ADDTIME()

ADDTIME() trong SQL có dạng: ADDTIME(expr1,expr2).

Hàm này cộng giá trị expr2 vào expr1 và trả về kết quả. Expr1 là một biểu thức dạng time hoặc datetime, còn expr2 là một biểu thức time.

mysql> SELECT ADDTIME('2018-12-31 23:59:59.999999','1 1:1:1.000002');
+---------------------------------------------------------+
| DATE_ADD('2018-12-31 23:59:59.999999','1 1:1:1.000002') |
+---------------------------------------------------------+
| 2019-01-02 01:01:01.000001                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Hàm CONVERT_TZ()

CONVERT_TZ() trong SQL có dạng: CONVERT_TZ(dt,from_tz,to_tz).

Hàm này được sử dụng để chuyển đổi giá trị datetime dt từ múi giờ from_tz thành múi giờ to_tz và trả về kết quả. CONVERT_TZ() trả về NULL nếu các đối số không hợp lệ.

Ví dụ 1:

mysql> SELECT CONVERT_TZ('2019-01-01 12:00:00','GMT','MET');
+---------------------------------------------------------+
| CONVERT_TZ('2019-01-01 12:00:00','GMT','MET')           |
+---------------------------------------------------------+
| 2019-01-01 13:00:00                                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Ví dụ 2:

mysql> SELECT CONVERT_TZ('2019-01-01 12:00:00','+00:00','+10:00');
+---------------------------------------------------------+
| CONVERT_TZ('2019-01-01 12:00:00','+00:00','+10:00')     |
+---------------------------------------------------------+
| 2019-01-01 22:00:00                                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Hàm CURDATE()

CURDATE() trong SQL trả về ngày hiện tại có định dạng ‘YYYY-MM-DD’ hoặc YYYYMMDD, tùy thuộc vào việc hàm đang được sử dụng trong ngữ cảnh chuỗi hay số.

mysql> SELECT CURDATE();
+---------------------------------------------------------+
| CURDATE()                                               |
+---------------------------------------------------------+
| 2019-03-15                                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT CURDATE() + 0;
+---------------------------------------------------------+
| CURDATE() + 0                                           |
+---------------------------------------------------------+
| 20190315                                                |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Hàm CURRENT_DATE()

CURRENT_DATE hay CURRENT_DATE() trong SQL trả về ngày hiện tại có định dạng 'YYYY-MM-DD' hoặc YYYYMMDD, tùy thuộc vào việc hàm đang được sử dụng trong ngữ cảnh chuỗi hay số.

Hàm này sử dụng tương tự như CURDATE().

mysql> SELECT CURRENT_DATE;
+---------------------------------------------------------+
| CURRENT_DATE                                            |
+---------------------------------------------------------+
| 2019-03-15                                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT CURRENT_DATE() + 1;
+---------------------------------------------------------+
| CURRENT_DATE() + 1                                      |
+---------------------------------------------------------+
| 20190316                                                |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Hàm CURTIME()

CURTIME() trong SQL trả về thời gian hiện tại dưới dạng giá trị 'HH: MM: SS' hoặc HHMMSS, tùy thuộc vào việc hàm đang được sử dụng trong ngữ cảnh chuỗi hay số.

mysql> SELECT CURTIME();
+---------------------------------------------------------+
| CURTIME()                                               |
+---------------------------------------------------------+
| 14:50:26                                                |
+---------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT CURTIME() + 0;
+---------------------------------------------------------+
| CURTIME() + 0                                           |
+---------------------------------------------------------+
| 145026                                                  |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Hàm CURRENT_TIME()

Hàm CURRENT_TIME hay CURRENT_TIME() trong SQL trả về thời gian hiện tại dưới dạng giá trị 'HH: MM: SS' hoặc HHMMSS, tùy thuộc vào việc hàm đang được sử dụng trong ngữ cảnh chuỗi hay số.

Hàm này sử dụng tương tự như CURTIME().

Hàm CURRENT_TIMESTAMP()

Hàm CURRENT_TIMESTAMP hay CURRENT_TIMESTAMP() trong SQL trả về datetime hiện tại dưới dạng một giá trị trong định dạng ‘YYYY-MM-DD HH: MM: SS’ hoặc YYYYMMDHHMMSS, tùy thuộc vào việc hàm đang được sử dụng trong ngữ cảnh chuỗi hay số.

Hàm này sử dụng tương tự như NOW().

mysql> SELECT CURRENT_TIMESTAMP;
+---------------------------------------------------------+
| CURRENT_TIMESTAMP                                       |
+---------------------------------------------------------+
| 2019-03-15 07:36:12                                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Hàm DATE()

DATE() trong SQL có dạng: DATE(expr).

Hàm DATE() trả về phần ngày của biểu thức expr dưới dạng date hoặc datetime được truyền vào.

mysql> SELECT DATE('2019-12-31 01:02:03');
+---------------------------------------------------------+
| DATE('2019-12-31 01:02:03')                             |
+---------------------------------------------------------+
|  2019-12-31                                             |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Hàm DATEDIFF()

DATEDIFF() trong SQL có dạng: DATEDIFF (expr1, expr2).

Hàm này trả về chênh lệch giữa hai giá trị thời gian dựa trên khoảng thời gian được chỉ định expr1expr2. Hai giá trị thời gian này phải là biểu thức dưới dạng date hoặc datetime. Chỉ tính phần ngày của các giá trị được sử dụng trong tính toán.

mysql> SELECT DATEDIFF('2019-12-31 23:59:59','2019-12-30');
+---------------------------------------------------------+
| DATEDIFF('2019-12-31 23:59:59','2019-12-30')            |
+---------------------------------------------------------+
| 1                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT DATEDIFF('2019-01-12 23:59:59','2019-02-12 23:59:59');
+---------------------------------------------------------+
| DATEDIFF('2019-01-12 23:59:59','2019-02-12 23:59:59')   |
+---------------------------------------------------------+
| -31                                                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Hàm DATE_ADD()

DATE_ADD() trong SQL có dạng: DATE_ADD(date,INTERVAL expr unit).

Hàm DATE_ADD() dùng để thực hiện phép toán cộng '+' số học trên date.

  • Tham số date là một giá trị DATE hoặc DATETIME xác định thời gian ban đầu.
  • Tham số expr là một biểu thức xác định giá trị khoảng thời gian được cộng vào từ date ban đầu, expr là một chuỗi; nó có thể bắt đầu với một dấu '-' cho khoảng thời gian âm.
  • unit là một từ khóa chỉ các đơn vị trong biểu thức sẽ được thông dịch.

Từ khóa INTERVALunit không phân biệt chữ hoa chữ thường.

Bảng dưới đây cho thấy định dạng của đối số expr cho mỗi giá trị unit.

GIÁ TRỊ UNITĐỊNH DẠNG CỦA EXPR
MICROSECONDMICROSECOND - Micro giây
SECONDSECOND - Giây
MINUTEMINUTE - Phút
HOURHOUR - Giờ
DAYDAY - Ngày
WEEKWEEK - Tuần
MONTHMONTH - Tháng
QUARTERQUARTER - Quý
YEARYEAR - Năm
SECOND_MICROSECOND'SECOND.MICROSECOND' - Giây.Micro giây
MINUTE_MICROSECOND'MINUTE.MICROSECOND' - Phút.Micro giây
MINUTE_SECOND'MINUTE:SECOND' - Phút:Giây
HOUR_MICROSECOND'HOUR.MICROSECOND' - Giờ.Micro giây
HOUR_SECOND'HOUR:MINUTES:SECOND' - Giờ:Phút:Giây
HOUR_MINUTE'HOUR:MINUTE' - Giờ:Phút
DAY_MICROSECOND'DAY.MICROSECOND' - Ngày.Micro giây
DAY_SECOND'DAY HOUR:MINUTE:SECOND' - Ngày Giờ:Phút:Giây
DAY_MINUTE'DAY HOUR:MINUTE' - Ngày Giờ:Phút
DAY_HOUR'DAY HOUR' - Ngày Giờ
YEAR_MONTH'YEAR-MONTH' - Năm-Tháng

Các giá trị QUARTERWEEK bắt đầu có từ phiên bản MySQL 5.0.0.

mysql> SELECT DATE_ADD('2019-12-31 23:59:59', INTERVAL '1:1' MINUTE_SECOND);
+---------------------------------------------------------+
| DATE_ADD('2019-12-31 23:59:59', INTERVAL...             |
+---------------------------------------------------------+
| 2020-01-01 00:01:00                                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT DATE_ADD('2019-01-01', INTERVAL 1 HOUR);
+---------------------------------------------------------+
| DATE_ADD('2019-01-01', INTERVAL 1 HOUR)                 |
+---------------------------------------------------------+
| 2019-01-01 01:00:00                                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Hàm DATE_SUB()

DATE_SUB() trong SQL có dạng: DATE_SUB(date,INTERVAL expr unit).

Hàm DATE_SUB() dùng để thực hiện phép toán trừ '-' số học trên date.

  • Tham số date là một giá trị DATE hoặc DATETIME xác định thời gian ban đầu.
  • Tham số expr là một biểu thức xác định giá trị khoảng thời gian bị trừ từ date ban đầu, expr là một chuỗi; nó có thể bắt đầu với một dấu '-'.
  • unit là một từ khóa chỉ các đơn vị trong biểu thức sẽ được thông dịch.

Từ khóa INTERVALunit không phân biệt chữ hoa chữ thường.

Định dạng của đối số expr cho mỗi giá trị unit tương tự như hàm DATE_ADD().

Các giá trị QUARTERWEEK bắt đầu có từ phiên bản MySQL 5.0.0.

mysql> SELECT DATE_SUB('2019-06-15', INTERVAL -10 DAY); 
+---------------------------------------------------------+
| SELECT DATE_SUB('2019-06-15', INTERVAL -10 DAY);        |
+---------------------------------------------------------+
| 2019-06-25                                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT DATE_SUB('2019-12-31 23:59:59', INTERVAL '1:1' MINUTE_SECOND);
+---------------------------------------------------------+
| DATE_SUB('2019-12-31 23:59:59', INTERVAL...             |
+---------------------------------------------------------+
| 2019-12-31 23:58:58                                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Hàm DATE_FORMAT()

DATE_FORMAT() trong SQL có dạng: DATE_FORMAT(date,format) dùng để định dạng giá trị date theo chuỗi format.

Dưới đây là các specifier có thể được sử dụng trong chuỗi format. Ký tự '%' là bắt buộc trước các ký tự specifier này.

SpecifierGiải thích
%aTên ngày trong tuần viết tắt (Sun..Sat)
%bTên tháng viết tắt (Jan..Dec)
%cTháng, dạng giá trị số (0..12)
%DNgày tháng theo số đếm (0th, 1st, 2nd, 3rd,…)
%dNgày trong tháng, dạng giá trị số (00..31)
%eNgày trong tháng, dạng giá trị số (0..31)
%fMicrosecond (000000..999999)
%HGiờ, dạng giá trị (00..23)
%hGiờ, dạng giá trị (01..12)
%IGiờ, dạng giá trị (01..12)
%iPhút, dạng giá trị số (00..59)
%jNgày trong năm (001..366)
%kGiờ, dạng giá trị (0..23)
%lGiờ, dạng giá trị (1..12)
%MTên tháng (January..December)
%mTháng, dạng giá trị số (00..12)
%pAM hoặc PM
%rThời gian, 12h (hh:mm:ss được theo sau bởi AM hoặc PM)
%SGiây (00..59)
%sGiây (00..59)
%TThời gian, 24h (hh:mm:ss)
%UTuần trong năm (00..53), với Sunday là ngày đầu tiên của tuần
%uTuần trong năm (00..53), với Monday là ngày đầu tiên của tuần
%VTuần trong năm (01..53), với Sunday là ngày đầu tiên của tuần; được sử dụng với %X
%vTuần trong năm (01..53), với Monday là ngày đầu tiên của tuần; được sử dụng với %x
%WTên ngày trong tuần (Sunday..Saturday)
%wNgày trong tuần, dạng số (0=Sunday..6=Saturday)
%XNăm cho tuần, với Sunday là ngày đầu tiên của tuần, giá trị 4 chữ số; được sử dụng với %V
%xNăm cho tuần, với Monday là ngày đầu tiên của tuần, giá trị 4 chữ số; được sử dụng với %v
%YNăm, giá trị 4 chữ số
%yNăm, giá trị 2 chữ số
%%Một hằng ký tự .%.
%xĐối với bất kỳ .x. nào không được liệt kê ở trên

Ví dụ:

mysql> SELECT DATE_FORMAT('2019-10-04 22:23:00', '%H %k %I %r %T %S %w');
+---------------------------------------------------------+
| DATE_FORMAT('2019-10-04 22:23:00.......                 |
+---------------------------------------------------------+
|  22 22 10 10:23:00 PM 22:23:00 00 5                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT DATE_FORMAT('2019-10-04 22:23:00', '%W %M %Y');
+---------------------------------------------------------+
| DATE_FORMAT('2019-10-04 22:23:00', '%W %M %Y')          |
+---------------------------------------------------------+
| Saturday October 2019                                   |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Hàm DAY()

DAY() trong SQL có dạng: DAY(date).

Hàm DAY() trả về ngày trong tháng từ date đã truyền vào, trong khoảng từ 0 đến 31.

mysql> SELECT DAY('2019-06-15'); 
+---------------------------------------------------------+
| DAY('2019-06-15')                                       |
+---------------------------------------------------------+
| 15                                                      |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Hàm này sử dụng tương tự như DAYOFMONTH().

Hàm DAYNAME()

DAYNAME() trong SQL có dạng: DAYNAME(date).

Hàm DAYNAME() trả về tên của ngày trong tuần của date đã được truyền vào.

mysql> SELECT DAYNAME('2019-03-15');
+---------------------------------------------------------+
| DAYNAME('2019-03-15')                                   |
+---------------------------------------------------------+
| Friday                                                  |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Hàm DAYOFMONTH()

DAYOFMONTH() trong SQL có dạng: DAYOFMONTH(date).

Hàm DAYOFMONTH() trả về ngày trong tháng từ date đã truyền vào, trong khoảng từ 0 đến 31.

mysql> SELECT DAYOFMONTH('2019-06-15'); 
+---------------------------------------------------------+
| DAYOFMONTH('2019-06-15')                                |
+---------------------------------------------------------+
| 15                                                      |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Hàm này sử dụng tương tự như DAY().

Hàm DAYOFWEEK()

DAYOFWEEK() trong SQL có dạng: DAYOFWEEK(date).

Hàm DAYOFWEEK() trả về chỉ số ngày trong tuần (1 = Sunday, 2 = Monday... 7 = Saturday). Các giá trị chỉ số này tương ứng với tiêu chuẩn ODBC.

mysql> SELECT DAYOFWEEK('2019-03-15');
+---------------------------------------------------------+
|DAYOFWEEK('2019-03-15')                                  |
+---------------------------------------------------------+
| 6                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Hàm DAYOFYEAR()

DAYOFYEAR() trong SQL có dạng: DAYOFYEAR(date).

Hàm DAYOFYEAR() trả về số thứ tự của ngày được truyền trong năm trong khoảng từ 1 đến 366.

mysql> SELECT DAYOFYEAR('2019-03-15');
+---------------------------------------------------------+
| DAYOFYEAR('2019-03-15')                                 |
+---------------------------------------------------------+
| 74                                                      |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Hàm EXTRACT()

EXTRACT() trong SQL có dạng: EXTRACT(unit FROM date).

Hàm EXTRACT() sử dụng các unit specifier giống như hàm DATE_ADD()DATE_SUB(), nhưng nó trích các phần từ date chứ không thực hiện các phép toán số học trên date.

mysql> SELECT EXTRACT(YEAR_MONTH FROM '2019-03-15 01:02:03');
+---------------------------------------------------------+
| EXTRACT(YEAR_MONTH FROM '2019-03-15 01:02:03')          |
+---------------------------------------------------------+
| 201903                                                  |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT EXTRACT(YEAR FROM '2019-03-15');
+---------------------------------------------------------+
| EXTRACT(YEAR FROM '2019-03-15')                         |
+---------------------------------------------------------+
| 2019                                                    |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Hàm FROM_DAYS()

FROM_DAYS() trong SQL có dạng: FROM_DAYS(N)

Hàm này được sử dụng để chuyển đổi số N thành một giá trị date cụ thể. FROM_DAYS() chỉ được sử dụng với các ngày trong lịch Gregorian (1582).

mysql> SELECT FROM_DAYS(737498);
+---------------------------------------------------------+
| FROM_DAYS(737498)                                       |
+---------------------------------------------------------+
| 2019-03-15                                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Hàm FROM_UNIXTIME()

FROM_UNIXTIME() trong SQL có dạng: FROM_UNIXTIME(unix_timestamp, [format]).

Thời gian Unix (Unix timestamp) là hệ thống nhằm diễn tả một điểm trên trục thời gian, theo trục thời gian nó sử dụng số giây để xác định thời điểm, với điểm gốc từ thời điểm 00:00:00 ngày 1/1/1970 theo giờ UTC.

Ví dụ: Lúc 00:00:00 - 12/02/2016 có giá trị timestamp là 1455235200; Có nghĩa là tính từ 00:00:00 - 1/1/1970 đến 00:00:00 - 12/02/2016 là 1455235200 giây.

Hàm FROM_UNIXTIME() trả về ngày đại diện của đối số unix_timestamp dưới dạng một giá trị trong định dạng 'YYYY-MM-DD HH:MM:SS' hoặc YYYYMMDDHHMMSS tùy thuộc vào việc hàm đang được sử dụng trong ngữ cảnh chuỗi hay số.

Giá trị được thể hiện trong múi giờ hiện tại. Đối số unix_timestamp có thể được tạo ra bởi hàm UNIX_TIMESTAMP().

mysql> SELECT FROM_UNIXTIME(1552688580);
+---------------------------------------------------------+
| FROM_UNIXTIME(1552688580)                               |
+---------------------------------------------------------+
| 2019-03-15 22:23:00                                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Nếu tham số format được truyền, kết quả sẽ được định dạng theo chuỗi format được liệt kê tương tự như hàm DATE_FORMAT().

mysql> SELECT FROM_UNIXTIME(1552688580, '%W %M %Y');
+---------------------------------------------------------+
| FROM_UNIXTIME(1552688580, '%W %M %Y')                   |
+---------------------------------------------------------+
| Friday March 2019                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Hàm HOUR()

Hàm HOUR() trong SQL có dạng: HOUR(time) trả về giờ từ time được truyền vào. Giá trị trả về nằm trong phạm vi từ 0 đến 23 cho các giá trị thời gian trong ngày.

mysql> SELECT HOUR('10:05:03');
+---------------------------------------------------------+
| HOUR('10:05:03')                                        |
+---------------------------------------------------------+
| 10                                                      |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Hàm LAST_DAY()

Hàm LAST_DAY() trong SQL có dạng: LAST_DAY(date).

Hàm này có tham số truyền vào là giá trị date hoặc datetime, trả về giá trị tương ứng cho ngày cuối cùng của tháng. Output sẽ là NULL nếu tham số không hợp lệ.

mysql> SELECT LAST_DAY('2019-03-15');
+---------------------------------------------------------+
| LAST_DAY('2019-03-15')                                  |
+---------------------------------------------------------+
| 2019-03-31                                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Hàm LOCALTIME()

LOCALTIME hay LOCALTIME() trả về datetime hiện tại dưới dạng một giá trị trong định dạng ‘YYYY-MM-DD HH: MM: SS’ hoặc YYYYMMDHHMMSS, tùy thuộc vào việc hàm đang được sử dụng trong ngữ cảnh chuỗi hay số.

Hàm này sử dụng tương tự như NOW().

mysql> SELECT LOCALTIME();
+---------------------------------------------------------+
| LOCALTIME()                                             |
+---------------------------------------------------------+
| 2019-03-15 09:53:17                                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Hàm LOCALTIMESTAMP()

Hàm LOCALTIMESTAMP hay LOCALTIMESTAMP() trả về datetime hiện tại dưới dạng một giá trị trong định dạng ‘YYYY-MM-DD HH: MM: SS’ hoặc YYYYMMDHHMMSS, tùy thuộc vào việc hàm đang được sử dụng trong ngữ cảnh chuỗi hay số.

Hàm này sử dụng tương tự như NOW().

mysql> SELECT LOCALTIMESTAMP;
+---------------------------------------------------------+
| LOCALTIMESTAMP                                          |
+---------------------------------------------------------+
| 2019-03-15 10:12:12                                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Hàm MAKEDATE()

MAKEDATE() trong SQL có dạng: MAKEDATE(year,dayofyear).

Hàm này trả về một ngày với tham số yeardayofyear được truyền. Giá trị dayofyear phải lớn hơn 0 nếu không kết quả sẽ là NULL.

mysql> SELECT MAKEDATE(2019,31);
+---------------------------------------------------------+
| MAKEDATE(2019,31)                                       |
+---------------------------------------------------------+
| 2019-01-31                                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT MAKEDATE(2019,122);
+---------------------------------------------------------+
| MAKEDATE(2019,122)                                      |
+---------------------------------------------------------+
| 2019-05-02                                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Hàm MAKETIME()

Hàm MAKETIME() trong SQL có dạng: MAKETIME(hour,minute,second), trả về một giá trị time từ các tham số hour, minute,second được truyền.

mysql> SELECT MAKETIME(12,15,30);
+---------------------------------------------------------+
| MAKETIME(12,15,30)                                      |
+---------------------------------------------------------+
| '12:15:30'                                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Hàm MICROSECOND()

Hàm MICROSECOND() trong SQL có dạng MICROSECOND(expr) trả về microsecond từ biểu thức thời gian (expr) dưới dạng số trong khoảng từ 0 đến 999999.

mysql> SELECT MICROSECOND('12:00:00.123456');
+---------------------------------------------------------+
| MICROSECOND('12:00:00.123456')                          |
+---------------------------------------------------------+
| 123456                                                  |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Hàm MINUTE()

Hàm MINUTE() trong SQL có dạng: MINUTE(time), trả về giá trị phút cho từ tham số time được truyền, trong khoảng từ 0 đến 59.

mysql> SELECT MINUTE('19-03-15 10:05:03');
+---------------------------------------------------------+
| MINUTE('19-03-15 10:05:03')                             |
+---------------------------------------------------------+
| 5                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Hàm MONTH()

Hàm MONTH() trong SQL có dạng: MONTH(date), trả về tháng từ tham số date được truyền, trong khoảng từ 0 đến 12.

mysql> SELECT MONTH('2019-02-12')
+---------------------------------------------------------+
| MONTH('2019-02-12')                                     |
+---------------------------------------------------------+
| 2                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Hàm MONTHNAME()

Hàm MONTHNAME() trong SQL có dạng MONTHNAME(date), trả về tên tháng của tham số date được truyền.

mysql> SELECT MONTHNAME('2019-02-12');
+---------------------------------------------------------+
| MONTHNAME('2019-02-12')                                 |
+---------------------------------------------------------+
| February                                                |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Hàm NOW()

Hàm NOW() trong SQL trả về datetime hiện tại dưới dạng một giá trị trong định dạng ‘YYYY-MM-DD HH: MM: SS’ hoặc YYYYMMDHHMMSS, tùy thuộc vào việc hàm đang được sử dụng trong ngữ cảnh chuỗi hay số. Kết quả của hàm là thời gian ở múi giờ hiện tại.

mysql> SELECT NOW();
+---------------------------------------------------------+
| NOW()                                                   |
+---------------------------------------------------------+
| 2019-03-15 16:50:26                                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Hàm PERIOD_ADD()

PERIOD_ADD() trong SQL có dạng PERIOD_ADD(P,N).

Hàm này thêm số tháng (N) được chỉ định vào một khoảng thời gian (P). P truyền vào dưới định dạng YYMM hoặc YYYYMM và trả về giá trị theo định dạng YYYYMM.

mysql> SELECT PERIOD_ADD(1901,2);
+---------------------------------------------------------+
| PERIOD_ADD(1901,2)                                      |
+---------------------------------------------------------+
| 201903                                                  |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT PERIOD_ADD(201901,2);
+---------------------------------------------------------+
| PERIOD_ADD(201901,2)                                    |
+---------------------------------------------------------+
| 201903                                                  |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Hàm PERIOD_DIFF()

PERIOD_DIFF() trong SQL có dạng: PERIOD_DIFF(P1,P2).

Hàm này trả về số tháng giữa khoảng thời gian P1P2 được truyền vào dưới định dạng YYMM hoặc YYYYMM.

mysql> SELECT PERIOD_DIFF(1902,201803);
+---------------------------------------------------------+
| PERIOD_DIFF(1902,201803)                                |
+---------------------------------------------------------+
| 11                                                      |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Hàm QUARTER()

Hàm QUARTER() trong SQL có dạng QUARTER(date) trả về quý trong năm từ date được truyền vào, trong khoảng từ 1 đến 4.

mysql> SELECT QUARTER('19-04-01');
+---------------------------------------------------------+
| QUARTER('19-04-01')                                     |
+---------------------------------------------------------+
| 2                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Hàm SECOND()

Hàm SECOND() trong SQL có dạng SECOND(time) trả về giá trị giây từ tham số time được truyền vào, trong khoảng từ 0 đến 59.

mysql> SELECT SECOND('10:05:03');
+---------------------------------------------------------+
| SECOND('10:05:03')                                      |
+---------------------------------------------------------+
| 3                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Hàm SEC_TO_TIME()

SEC_TO_TIME() trong SQL có dạng: SEC_TO_TIME(second).

Hàm này trả về giá trị được chuyển đổi từ tham số second đã cho thành giờ, phút và giây có định dạng ‘HH: MM: SS’ hoặc HHMMSS, tuỳ thuộc vào việc hàm này sử dụng chuỗi hay số.

mysql> SELECT SEC_TO_TIME(1202);
+---------------------------------------------------------+
| SEC_TO_TIME(1202)                                       |
+---------------------------------------------------------+
| 00:20:02                                                |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Hàm STR_TO_DATE()

STR_TO_DATE() trong SQL có dạng: STR_TO_DATE(str,format).

Hàm này ngược với hàm DATE_FORMAT(), trả về một giá trị DATETIME nếu chuỗi str chứa cả hai phần datetime, trả về giá trị DATE hoặc TIME nếu chuỗi chỉ chứa các phần date hoặc time.

mysql> SELECT STR_TO_DATE('03/15/2019', '%m/%d/%Y');
+---------------------------------------------------------+
| STR_TO_DATE('03/15/2019', '%m/%d/%Y')                   |
+---------------------------------------------------------+
| 2019-03-15                                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT STR_TO_DATE('March 15 2019", '%M %d %Y');
+---------------------------------------------------------+
| STR_TO_DATE('March 15 2019", "%M %d %Y')                |
+---------------------------------------------------------+
| 2019-03-15                                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Hàm SUBDATE()

Có 2 dạng hàm SUBDATE:

  • SUBDATE(expr, day)
  • SUBDATE(date, interval expr unit)

1. SUBDATE(expr, day)

Trừ một khoảng thời gian nhất định từ tham số thời gian được truyền.

  • expr: khoảng thời gian bạn muốn thay đổi.
  • day: một số nguyên ngày bạn muốn trừ đi từ biểu thức expr.
mysql> SELECT SUBDATE('2019-03-15', 31);
+---------------------------------------------------------+
| SUBDATE('2019-03-15', 31)                               |
+---------------------------------------------------------+
| 2019-02-12                                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

2. SUBDATE(date, interval expr unit)

Khi đối số thứ hai được gọi dưới dạng INTERVAL, hàm SUBDATE() có chức năng giống hàm DATE_SUB().

Ví dụ hàm DATE_SUB sử dụng như này:

mysql> SELECT DATE_SUB('2019-03-15', INTERVAL 31 DAY);
+---------------------------------------------------------+
| DATE_SUB('2019-03-15', INTERVAL 31 DAY)                 |
+---------------------------------------------------------+
| 2019-02-12                                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Và SUBDATE có chức năng tương tự:

mysql> SELECT SUBDATE('2019-03-15', INTERVAL 31 DAY);
+---------------------------------------------------------+
| SUBDATE('2019-03-15', INTERVAL 31 DAY)                  |
+---------------------------------------------------------+
| 2019-02-12                                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Hàm SUBTIME()

SUBTIME() trong SQL có dạng: SUBTIME(expr1,expr2).

Hàm này trả về giá trị thời gian là hiệu của expr1 trừ expr2. Expr1 là một biểu thức dạng time hoặc datetime, còn expr2 là một biểu thức time.

mysql> SELECT SUBTIME('2019-03-31 23:59:59.999999', '1 1:1:1.000002');
+---------------------------------------------------------+
| SUBTIME('2019-03-31 23:59:59.999999', '1 1:1:1.000002') |
+---------------------------------------------------------+
| 2019-03-30 22:58:58.999997                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Hàm SYSDATE()

Hàm SYSDATE() trong SQL trả về datetime hiện tại dưới dạng một giá trị có định dạng 'YYYY-MM-DD HH:MM:SS' hoặc YYYYMMDDHHMMSS, phụ thuộc vào hàm đang được sử dụng trong ngữ cảnh chuỗi hay số.

mysql> SELECT SYSDATE();
+---------------------------------------------------------+
| SYSDATE()                                               |
+---------------------------------------------------------+
| 2019-03-15 16:47:44                                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Hàm TIME()

Hàm TIME() trong SQL có dạng TIME(expr) trả về giá trị thời gian từ biểu thức expr (time hoặc datetime) được truyền vào.

mysql> SELECT TIME('2019-03-15 01:02:03');
+---------------------------------------------------------+
| TIME('2019-03-15 01:02:03')                             |
+---------------------------------------------------------+
| 01:02:03                                                |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Hàm TIMEDIFF()

TIMEDIFF() trong SQL có dạng: TIMEDIFF(expr1, expr2).

Hàm này trả về chênh lệch giữa hai giá trị thời gian expr1expr2, kết quả được biểu diễn dưới dạng một giá trị time. Hai giá trị thời gian này là các biểu thức time hoặc datetime và cả hai phải cùng một kiểu.

mysql> SELECT TIMEDIFF('2019-03-15 23:59:59.000001', '2019-03-14 01:01:01.000002');
+---------------------------------------------------------+
| TIMEDIFF('2019-03-15 23:59:59.000001', ...              |
+---------------------------------------------------------+
|  46:58:57.999999                                        |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Hàm TIMESTAMP()

Có 2 dạng hàm TIMESTAMP:

  • TIMESTAMP(expr)
  • TIMESTAMP(expr1,expr2)

1. TIMESTAMP(expr)

Khi chỉ có một tham số, hàm TIMESTAMP() trong SQL trả về giá trị datetime với tham số expr có thể là date hoặc datetime.

mysql> SELECT TIMESTAMP("2019-03-15");
+---------------------------------------------------------+
| TIMESTAMP("2019-03-15")                                 |
+---------------------------------------------------------+
| 2019-03-15 00:00:00                                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

2. TIMESTAMP(expr1,expr2)

Khi hàm TIMESTAMP() có hai tham số thì expr2 sẽ được cộng vào expr1 và trả về giá trị datetime.

  • expr1 có thể là date hoặc datetime.
  • expr2 chỉ có thể là time.
mysql> SELECT TIMESTAMP("2019-03-15", "26:10:11");
+---------------------------------------------------------+
| TIMESTAMP("2019-03-15", "26:10:11")                     |
+---------------------------------------------------------+
| 2019-03-16 02:10:11                                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Hàm TIMESTAMPADD()

Trong SQL, hàm TIMESTAMPADD() trả về giá trị datetime mới khi nó được cộng thêm một khoảng thời gian được chỉ định vào tham số thời gian được truyền ban đầu.

Cú pháp TIMESTAMPADD() có dạng: TIMESTAMPADD(unit,interval,datetime_expr).

  • unit: đơn vị thời gian sử dụng để cộng thêm vào biểu thức thời gian ban đầu datetime_expr. Nó có thể là một trong những giá trị sau:
    • FRAC_SECOND (microsecond)
    • SECOND, MINUTE
    • HOUR, DAY
    • WEEK
    • MONTH
    • QUARTER
    • YEAR
  • interval: số lượng khoảng thời gian mà bạn muốn thêm.
  • datetime_expr: biểu thức thời gian ban đầu.
mysql> SELECT TIMESTAMPADD(MINUTE,1,'2019-03-15');
+---------------------------------------------------------+
| TIMESTAMPADD(MINUTE,1,'2019-03-15')                     |
+---------------------------------------------------------+
| 2019-03-15 00:01:00                                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Hàm TIMESTAMPDIFF()

Cú pháp hàm có dạng: TIMESTAMPDIFF(unit, datetime_expr1, datetime_expr2).

Hàm TIMESTAMPDIFF() trong SQL 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 datetime_expr1datetime_expr2.

  • datetime_expr1, datetime_expr2: tham số ở định dạng date hoặc datetime.
  • unit: đơn vị thời gian của giá trị được trả về. Nó có thể là một trong những giá trị sau:
    • FRAC_SECOND (microsecond)
    • SECOND, MINUTE
    • HOUR, DAY
    • WEEK
    • MONTH
    • QUARTER
    • YEAR
mysql> SELECT TIMESTAMPDIFF(MONTH,'2019-02-01','2019-05-01');
+---------------------------------------------------------+
| TIMESTAMPDIFF(MONTH,'2019-02-01','2019-05-01')          |
+---------------------------------------------------------+
| 3                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Hàm TIME_FORMAT()

Cú pháp hàm có dạng: TIME_FORMAT(time,format).

Hàm TIME_FORMAT trong SQL được sử dụng như hàm DATE_FORMAT() nhưng tham số format có thể chỉ chứa định dạng giờ, phút và giây.

SpecifierGiải thích
%fMicrosecond (000000..999999)
%HGiờ, dạng giá trị (00..23)
%hGiờ, dạng giá trị (01..12)
%IGiờ, dạng giá trị (01..12)
%iPhút, dạng giá trị số (00..59)
%pAM hoặc PM
%rThời gian, 12h (hh:mm:ss được theo sau bởi AM hoặc PM)
%SGiây (00..59)
%sGiây (00..59)
%TThời gian, 24h (hh:mm:ss)

Ví dụ:

mysql> SELECT TIME_FORMAT('19:30:10', '%h %i %s %p');
+---------------------------------------------------------+
| TIME_FORMAT('19:30:10', '%h %i %s %p')                  |
+---------------------------------------------------------+
| 07 30 10 PM                                             |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT TIME_FORMAT('19:30:10', '%r');
+---------------------------------------------------------+
| TIME_FORMAT('19:30:10', '%r')                           |
+---------------------------------------------------------+
| 07:30:10 PM                                             |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT TIME_FORMAT('97:15:40','%H %k %h %I %l');
+---------------------------------------------------------+
| TIME_FORMAT('97:15:40','%H %k %h %I %l')                |
+---------------------------------------------------------+
| 97 97 01 01 1                                           |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Nếu giá trị time chứa một phần giờ lớn hơn 23 thì ta sử dụng %H%k để trả về giá trị lớn hơn dãy giá trị thường dùng 0…23.

Hàm TIME_TO_SEC()

Hàm TIME_TO_SEC() trong SQL có dạng TIME_TO_SEC(time), trả về số giây được chuyển đổi từ tham số time.

mysql> SELECT TIME_TO_SEC('22:23:00');
+---------------------------------------------------------+
| TIME_TO_SEC('22:23:00')                                 |
+---------------------------------------------------------+
| 80580                                                   |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Hàm TO_DAYS()

Hàm TO_DAYS() trong SQL có dạng TO_DAYS(date), trả về số ngày giữa giá trị thời gian date và năm 0 (tính từ 0000-00-00).

mysql> SELECT TO_DAYS('2019-03-15');
+---------------------------------------------------------+
| TO_DAYS('2019-03-15')                                   |
+---------------------------------------------------------+
| 737498                                                  |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT TO_DAYS(190316);
+---------------------------------------------------------+
| TO_DAYS(190316)                                         |
+---------------------------------------------------------+
| 737499                                                  |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Hàm UNIX_TIMESTAMP()

Có 2 dạng hàm UNIX_TIMESTAMP:

  • UNIX_TIMESTAMP()
  • UNIX_TIMESTAMP(date)

1. UNIX_TIMESTAMP()

Trong SQL, nếu hàm UNIX_TIMESTAMP() không có tham số đi kèm sẽ trả về số giây theo Unix timestamp, tức là số giây kể từ ‘1970-01-01 00:00:00’ UTC tới ngày giờ hiện tại dưới dạng số nguyên không dấu.

mysql> SELECT UNIX_TIMESTAMP();
+---------------------------------------------------------+
| UNIX_TIMESTAMP()                                        |
+---------------------------------------------------------+
| 1552677612                                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

2. UNIX_TIMESTAMP(date)

Nếu hàm UNIX_TIMESTAMP có tham số date đi kèm, SQL sẽ trả về số giây theo Unix timestamp từ ‘1970-01-01 00:00:00’ UTC tới giá trị ngày giờ date được truyền dưới dạng số nguyên không dấu (date có thể là một chuỗi DATE, DATETIME, TIMESTAMP hay một số ở định dạng YYMMDD hoặc YYYYMMDD).

mysql> SELECT UNIX_TIMESTAMP('1995-02-12 22:23:00');
+---------------------------------------------------------+
| UNIX_TIMESTAMP('1995-02-12 22:23:00')                   |
+---------------------------------------------------------+
| 792627780                                               |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Hàm UTC_DATE()

Hàm UTC_DATE() hay UTC_DATE trong SQL trả về ngày UTC hiện tại dưới dạng một giá trị có định dạng ‘YYYY-MM-DD’ hoặc YYYYMMDD, tùy thuộc vào việc hàm đang được sử dụng trong ngữ cảnh chuỗi hay số.

mysql> SELECT UTC_DATE();
+---------------------------------------------------------+
| UTC_DATE()                                              |
+---------------------------------------------------------+
| 2019-03-15                                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT UTC_DATE() + 0;
+---------------------------------------------------------+
| UTC_DATE() + 0                                          |
+---------------------------------------------------------+
| 20190315                                                |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Hàm UTC_TIME()

Hàm UTC_TIME() hay UTC_TIME trả về giờ UTC hiện tại dưới dạng một giá trị có định dạng 'HH:MM:SS' hoặc HHMMSS, tùy thuộc vào việc hàm đang được sử dụng trong ngữ cảnh chuỗi hay số.

mysql> SELECT UTC_TIME();
+---------------------------------------------------------+
| UTC_TIME()                                              |
+---------------------------------------------------------+
| 18:07:53                                                |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT UTC_TIME() + 0;
+---------------------------------------------------------+
| UTC_TIME() + 0                                          |
+---------------------------------------------------------+
| 180753                                                  |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Hàm UTC_TIMESTAMP()

Hàm UTC_TIMESTAMP() hay UTC_TIMESTAMP trả về ngày giờ UTC hiện tại dưới dạng một giá trị có định dạng 'YYYY-MM-DD HH:MM:SS' hoặc YYYYMMDDHHMMSS, tùy thuộc vào việc hàm đang được sử dụng trong ngữ cảnh chuỗi hay số.

mysql> SELECT UTC_TIMESTAMP();
+---------------------------------------------------------+
| UTC_TIMESTAMP()                                         |
+---------------------------------------------------------+
| 2019-03-15 18:08:04                                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT UTC_TIMESTAMP() + 0;
+---------------------------------------------------------+
| UTC_TIMESTAMP() + 0                                     |
+---------------------------------------------------------+
| 20190315180804                                          |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Hàm WEEKDAY()

WEEKDAY() trong SQL có dạng: WEEKDAY(date).

Hàm WEEKDAY() trả về chỉ số ngày trong tuần (0 = Thứ Hai, 1 = Thứ Ba... 6 = Chủ Nhật).

mysql> SELECT WEEKDAY('2019-03-15 22:23:00');
+---------------------------------------------------------+
| WEEKDAY('2019-03-15 22:23:00')                          |
+---------------------------------------------------------+
| 4                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Hàm WEEKOFYEAR()

WEEKOFYEAR() trong SQL có dạng: WEEKOFYEAR(date).

Hàm WEEKOFYEAR() trả về chỉ số tuần của date trong năm là một số nguyên từ 1 đến 53.

mysql> SELECT WEEKOFYEAR('2019-03-15');
+---------------------------------------------------------+
| WEEKOFYEAR('2019-03-15')                                |
+---------------------------------------------------------+
| 11                                                      |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Hàm YEAR()

Hàm YEAR() trong SQL có dạng YEAR(date), trả về năm tương ứng của tham số date được truyền. Kết quả trả về nằm trong phạm vi 1000 tới 9999.

mysql> SELECT YEAR('19-03-15');
+---------------------------------------------------------+
| YEAR('19-03-15')                                        |
+---------------------------------------------------------+
| 2019                                                    |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Trong phần tiếp theo, chúng ta sẽ tìm hiểu về bảng tạm Temporary Table trong SQL, các bạn nhớ theo dõi nhé.

Nhìn chung, dùng hàm DATE và TIME trong SQL không khó. Bạn chỉ cần nắm được cú pháp, cách sử dụng để có thể áp dụng linh hoạt trong nhiều trường hợp.

Hi vọng bài viết hữu ích với các bạn.

Bài trước: Hàm xử lý DATE/TIME trong SQL - Phần 1

Bài tiếp: Bảng tạm Temporary Table trong SQL

Thứ Tư, 30/08/2023 16:49
4,217 👨 60.207
1 Bình luận
Sắp xếp theo
  • nguyễn thị trung anh- 18a05
    nguyễn thị trung anh- 18a05

    'DAYOFWEEK' is not a recognized built-in function name.

     lỗi này sửa ntn ạ, e dùng sql 2019

    Thích Phản hồi 25/07/22
    ❖ Học SQL