SQL - Hàm ngày
Bảng sau đây có danh sách tất cả các hàm quan trọng liên quan đến Ngày và Giờ có sẵn thông qua SQL. Có nhiều chức năng khác được hỗ trợ bởi RDBMS của bạn. Danh sách đã cho dựa trên MySQL RDBMS.
Sr.No. | Mô tả chức năng |
---|---|
1 | THÊM () Thêm ngày |
2 | THÊM THỜI GIAN() Thêm thời gian |
3 | CONVERT_TZ () Chuyển đổi từ múi giờ này sang múi giờ khác |
4 | CURDATE () Trả về ngày hiện tại |
5 | CURRENT_DATE (), CURRENT_DATE Từ đồng nghĩa với CURDATE () |
6 | CURRENT_TIME (), CURRENT_TIME Từ đồng nghĩa với CURTIME () |
7 | CURRENT_TIMESTAMP (), CURRENT_TIMESTAMP Từ đồng nghĩa với NOW () |
số 8 | CURTIME () Trả về thời gian hiện tại |
9 | DATE_ADD () Thêm hai ngày |
10 | ĐỊNH DẠNG NGÀY THÁNG() Định dạng ngày như đã chỉ định |
11 | DATE_SUB () Trừ hai ngày |
12 | NGÀY() Trích xuất phần ngày của biểu thức ngày tháng hoặc ngày giờ |
13 | DATEDIFF () Trừ hai ngày |
14 | NGÀY() Từ đồng nghĩa với DAYOFMONTH () |
15 | DAYNAME () Trả về tên của ngày trong tuần |
16 | DAYOFMONTH () Trả về ngày trong tháng (1-31) |
17 | NGÀY TRONG TUẦN() Trả về chỉ mục ngày trong tuần của đối số |
18 | DAYOFYEAR () Trả về ngày trong năm (1-366) |
19 | TRÍCH XUẤT Trích xuất một phần của ngày |
20 | FROM_DAYS () Chuyển đổi một số ngày thành một ngày |
21 | FROM_UNIXTIME () Định dạng ngày dưới dạng dấu thời gian UNIX |
22 | HOUR () Trích xuất giờ |
23 | NGÀY CUỐI Trả về ngày cuối cùng của tháng cho đối số |
24 | LOCALTIME (), LOCALTIME Từ đồng nghĩa với NOW () |
25 | LOCALTIMESTAMP, LOCALTIMESTAMP () Từ đồng nghĩa với NOW () |
26 | MAKEDATE () Tạo một ngày trong năm và ngày trong năm |
27 | MAKETIME MAKETIME () |
28 | MICROSECOND () Trả về micro giây từ đối số |
29 | PHÚT() Trả về phút từ đối số |
30 | THÁNG() Trả lại tháng kể từ ngày đã qua |
31 | MONTHNAME () Trả về tên của tháng |
32 | HIỆN NAY() Trả về ngày và giờ hiện tại |
33 | PERIOD_ADD () Thêm một khoảng thời gian vào một năm tháng |
34 | PERIOD_DIFF () Trả về số tháng giữa các khoảng thời gian |
35 | PHẦN TƯ() Trả về phần tư từ đối số ngày |
36 | SEC_TO_TIME () Chuyển đổi giây sang định dạng 'HH: MM: SS' |
37 | THỨ HAI() Trả về thứ hai (0-59) |
38 | STR_TO_DATE () Chuyển đổi một chuỗi thành một ngày |
39 | SUBDATE () Khi được gọi với ba đối số, một từ đồng nghĩa với DATE_SUB () |
40 | SUBTIME () Trừ lần |
41 | SYSDATE () Trả về thời gian mà hàm thực thi |
42 | TIME_FORMAT () Định dạng theo thời gian |
43 | TIME_TO_SEC () Trả về đối số được chuyển đổi thành giây |
44 | THỜI GIAN() Trích xuất phần thời gian của biểu thức đã qua |
45 | TIMEDIFF () Trừ thời gian |
46 | TIMESTAMP () Với một đối số duy nhất, hàm này trả về ngày tháng hoặc biểu thức ngày giờ. Với hai đối số, tổng các đối số |
47 | TIMESTAMPADD () Thêm khoảng thời gian vào biểu thức ngày giờ |
48 | TIMESTAMPDIFF () Trừ một khoảng thời gian khỏi biểu thức ngày giờ |
49 | TO_DAYS () Trả về đối số ngày được chuyển đổi thành ngày |
50 | UNIX_TIMESTAMP () Trả về dấu thời gian UNIX |
51 | UTC_DATE () Trả về ngày UTC hiện tại |
52 | UTC_TIME () Trả về thời gian UTC hiện tại |
53 | UTC_TIMESTAMP () Trả về ngày và giờ UTC hiện tại |
54 | TUẦN() Trả về số tuần |
55 | WEEKDAY () Trả về chỉ mục ngày trong tuần |
56 | WEEKOFYEAR () Trả về tuần lịch của ngày (1-53) |
57 | NĂM() Trả về năm |
58 | NĂM TUẦN () Trả về năm và tuần |
ADDDATE (ngày, đơn vị thời hạn INTERVAL), ADDDATE (expr, ngày)
Khi được gọi với dạng INTERVAL của đối số thứ hai, ADDDATE () là một từ đồng nghĩa với DATE_ADD (). Hàm liên quan SUBDATE () là một từ đồng nghĩa với DATE_SUB (). Để biết thông tin về đối số đơn vị INTERVAL, hãy xem thảo luận cho DATE_ADD ().
mysql> SELECT DATE_ADD('1998-01-02', INTERVAL 31 DAY);
+---------------------------------------------------------+
| DATE_ADD('1998-01-02', INTERVAL 31 DAY) |
+---------------------------------------------------------+
| 1998-02-02 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT ADDDATE('1998-01-02', INTERVAL 31 DAY);
+---------------------------------------------------------+
| ADDDATE('1998-01-02', INTERVAL 31 DAY) |
+---------------------------------------------------------+
| 1998-02-02 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
Khi được gọi với dạng ngày của đối số thứ hai, MySQL coi nó như một số nguyên ngày sẽ được thêm vào expr.
mysql> SELECT ADDDATE('1998-01-02', 31);
+---------------------------------------------------------+
| DATE_ADD('1998-01-02', INTERVAL 31 DAY) |
+---------------------------------------------------------+
| 1998-02-02 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
ADDTIME (expr1, expr2)
ADDTIME () thêm expr2 vào expr1 và trả về kết quả. Expr1 là một biểu thức thời gian hoặc ngày giờ, trong khi expr2 là một biểu thức thời gian.
mysql> SELECT ADDTIME('1997-12-31 23:59:59.999999','1 1:1:1.000002');
+---------------------------------------------------------+
| DATE_ADD('1997-12-31 23:59:59.999999','1 1:1:1.000002') |
+---------------------------------------------------------+
| 1998-01-02 01:01:01.000001 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
CONVERT_TZ (dt, from_tz, to_tz)
Điều này chuyển đổi một giá trị datetime dt từ múi giờ do from_tz cung cấp thành múi giờ do to_tz cung cấp và trả về giá trị kết quả. Hàm này trả về NULL nếu các đối số không hợp lệ.
mysql> SELECT CONVERT_TZ('2004-01-01 12:00:00','GMT','MET');
+---------------------------------------------------------+
| CONVERT_TZ('2004-01-01 12:00:00','GMT','MET') |
+---------------------------------------------------------+
| 2004-01-01 13:00:00 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT CONVERT_TZ('2004-01-01 12:00:00','+00:00','+10:00');
+---------------------------------------------------------+
| CONVERT_TZ('2004-01-01 12:00:00','+00:00','+10:00') |
+---------------------------------------------------------+
| 2004-01-01 22:00:00 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
CURDATE ()
Trả về ngày hiện tại dưới dạng giá trị ở định dạng 'YYYY-MM-DD' hoặc YYYYMMDD, tùy thuộc vào việc hàm được sử dụng trong chuỗi hay trong ngữ cảnh số.
mysql> SELECT CURDATE();
+---------------------------------------------------------+
| CURDATE() |
+---------------------------------------------------------+
| 1997-12-15 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT CURDATE() + 0;
+---------------------------------------------------------+
| CURDATE() + 0 |
+---------------------------------------------------------+
| 19971215 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
CURRENT_DATE và CURRENT_DATE ()
CURRENT_DATE và CURRENT_DATE () là từ đồng nghĩa của CURDATE ()
CURTIME ()
Trả về thời gian hiện tại dưới dạng giá trị ở định dạng 'HH: MM: SS' hoặc HHMMSS, tùy thuộc vào việc hàm được sử dụng trong chuỗi hay trong ngữ cảnh số. Giá trị được biểu thị theo múi giờ hiện tại.
mysql> SELECT CURTIME();
+---------------------------------------------------------+
| CURTIME() |
+---------------------------------------------------------+
| 23:50:26 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT CURTIME() + 0;
+---------------------------------------------------------+
| CURTIME() + 0 |
+---------------------------------------------------------+
| 235026 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
CURRENT_TIME và CURRENT_TIME ()
CURRENT_TIME và CURRENT_TIME () là từ đồng nghĩa của CURTIME ().
CURRENT_TIMESTAMP và CURRENT_TIMESTAMP ()
CURRENT_TIMESTAMP và CURRENT_TIMESTAMP () là từ đồng nghĩa với NOW ().
DATE (expr)
Trích xuất phần ngày của ngày hoặc biểu thức datetime expr.
mysql> SELECT DATE('2003-12-31 01:02:03');
+---------------------------------------------------------+
| DATE('2003-12-31 01:02:03') |
+---------------------------------------------------------+
| 2003-12-31 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
DATEDIFF (expr1, expr2)
DATEDIFF () trả về expr1. expr2 được biểu thị dưới dạng giá trị tính theo ngày từ ngày này sang ngày khác. Cả expr1 và expr2 đều là biểu thức ngày tháng hoặc ngày giờ. Chỉ phần ngày của các giá trị được sử dụng trong phép tính.
mysql> SELECT DATEDIFF('1997-12-31 23:59:59','1997-12-30');
+---------------------------------------------------------+
| DATEDIFF('1997-12-31 23:59:59','1997-12-30') |
+---------------------------------------------------------+
| 1 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
DATE_ADD (ngày, đơn vị thời hạn INTERVAL), DATE_SUB (ngày, đơn vị thời hạn INTERVAL)
Các hàm này thực hiện số học ngày tháng. Cácdatelà giá trị DATETIME hoặc DATE xác định ngày bắt đầu. Cácexprlà một biểu thức xác định giá trị khoảng thời gian được cộng hoặc trừ từ ngày bắt đầu. Expr là một chuỗi; nó có thể bắt đầu bằng dấu '-' cho các khoảng âm.
A unit là một từ khóa cho biết các đơn vị mà biểu thức cần được diễn giải.
Các INTERVAL từ khóa và từ chỉ định đơn vị không phân biệt chữ hoa chữ thường.
Bảng sau đây cho thấy dạng mong đợi của đối số expr cho mỗi giá trị đơn vị.
giá trị đơn vị | ExprFormat dự kiến |
---|---|
MICROSECOND | MICROSECONDS |
THỨ HAI | GIÂY |
PHÚT | PHÚT |
GIỜ | GIỜ |
NGÀY | NGÀY |
TUẦN | TUẦN |
THÁNG | THÁNG |
PHẦN TƯ | QUARTERS |
NĂM | NĂM |
SECOND_MICROSECOND | 'SECONDS.MICROSECONDS' |
MINUTE_MICROSECOND | 'MINUTES.MICROSECONDS' |
MINUTE_SECOND | 'MINUTES: SECONDS' |
HOUR_MICROSECOND | 'HOURS.MICROSECONDS' |
HOUR_SECOND | 'HOURS: MINUTES: SECONDS' |
HOUR_MINUTE | 'HOURS: MINUTES' |
DAY_MICROSECOND | 'DAYS.MICROSECONDS' |
DAY_SECOND | 'DAYS GIỜ: MINUTES: SECONDS' |
DAY_MINUTE | 'NGÀY GIỜ: PHÚT' |
DAY_HOUR | 'NGÀY GIỜ' |
NĂM THÁNG | 'NĂM-THÁNG' |
Giá trị QUARTER và WEEKcó sẵn từ MySQL 5.0.0. phiên bản.
mysql> SELECT DATE_ADD('1997-12-31 23:59:59',
-> INTERVAL '1:1' MINUTE_SECOND);
+---------------------------------------------------------+
| DATE_ADD('1997-12-31 23:59:59', INTERVAL... |
+---------------------------------------------------------+
| 1998-01-01 00:01:00 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT DATE_ADD('1999-01-01', INTERVAL 1 HOUR);
+---------------------------------------------------------+
| DATE_ADD('1999-01-01', INTERVAL 1 HOUR) |
+---------------------------------------------------------+
| 1999-01-01 01:00:00 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
DATE_FORMAT (ngày, định dạng)
Lệnh này định dạng giá trị ngày tháng theo chuỗi định dạng.
Các thông số sau có thể được sử dụng trong chuỗi định dạng. Ký tự '%' là bắt buộc trước các ký tự chỉ định định dạng.
Sr.No. | Chỉ định & Mô tả |
---|---|
1 | %a Tên ngày trong tuần viết tắt (CN..Sat) |
2 | %b Tên tháng viết tắt (Jan..Dec) |
3 | %c Tháng, số (0..12) |
4 | %D Ngày trong tháng với hậu tố tiếng Anh (0th, 1, 2, 3,.) |
5 | %d Ngày trong tháng, số (00..31) |
6 | %e Ngày trong tháng, số (0..31) |
7 | %f Microseconds (000000..999999) |
số 8 | %H Giờ (00..23) |
9 | %h Giờ (01..12) |
10 | %I Giờ (01..12) |
11 | %i Phút, số (00..59) |
12 | %j Ngày trong năm (001..366) |
13 | %k Giờ (0..23) |
14 | %l Giờ (1..12) |
15 | %M Tên tháng (Tháng 1.. Tháng 12) |
16 | %m Tháng, số (00..12) |
17 | %p SA hoặc CH |
18 | %r Thời gian, 12 giờ (hh: mm: ss sau đó là SA hoặc CH) |
19 | %S Giây (00..59) |
20 | %s Giây (00..59) |
21 | %T Thời gian, 24 giờ (hh: mm: ss) |
22 | %U Tuần (00..53), trong đó Chủ nhật là ngày đầu tiên trong tuần |
23 | %u Tuần (00..53), trong đó Thứ Hai là ngày đầu tiên trong tuần |
24 | %V Tuần (01..53), trong đó Chủ nhật là ngày đầu tiên trong tuần; được sử dụng với% X |
25 | %v Tuần (01..53), trong đó Thứ Hai là ngày đầu tiên trong tuần; được sử dụng với% x |
26 | %W Tên ngày trong tuần (Chủ nhật..Thứ bảy) |
27 | %w Ngày trong tuần (0 = Chủ nhật..6 = Thứ bảy) |
28 | %X Năm cho tuần mà Chủ nhật là ngày đầu tiên của tuần, là số, bốn chữ số; được sử dụng với% V |
29 | %x Năm trong tuần, trong đó Thứ Hai là ngày đầu tiên của tuần, dạng số, bốn chữ số; được sử dụng với% v |
30 | %Y Năm, số, bốn chữ số |
31 | %y Năm, số (hai chữ số) |
32 | %% Một nghĩa đen.%. tính cách |
33 | %x x, cho bất kỳ.x. không được liệt kê ở trên |
mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y');
+---------------------------------------------------------+
| DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y') |
+---------------------------------------------------------+
| Saturday October 1997 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00'
-> '%H %k %I %r %T %S %w');
+---------------------------------------------------------+
| DATE_FORMAT('1997-10-04 22:23:00....... |
+---------------------------------------------------------+
| 22 22 10 10:23:00 PM 22:23:00 00 6 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
DATE_SUB (ngày, đơn vị thời hạn INTERVAL)
Điều này tương tự với hàm DATE_ADD ().
DAY (ngày)
DAY () là một từ đồng nghĩa với hàm DAYOFMONTH ().
DAYNAME (ngày)
Trả về tên của ngày trong tuần cho ngày.
mysql> SELECT DAYNAME('1998-02-05');
+---------------------------------------------------------+
| DAYNAME('1998-02-05') |
+---------------------------------------------------------+
| Thursday |
+---------------------------------------------------------+
1 row in set (0.00 sec)
DAYOFMONTH (ngày)
Trả về ngày trong tháng cho ngày, trong phạm vi từ 0 đến 31.
mysql> SELECT DAYOFMONTH('1998-02-03');
+---------------------------------------------------------+
| DAYOFMONTH('1998-02-03') |
+---------------------------------------------------------+
| 3 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
DAYOFWEEK (ngày)
Trả về chỉ số ngày trong tuần cho ngày (1 = Chủ nhật, 2 = Thứ Hai,., 7 = Thứ Bảy). Các giá trị chỉ số này tương ứng với tiêu chuẩn ODBC.
mysql> SELECT DAYOFWEEK('1998-02-03');
+---------------------------------------------------------+
|DAYOFWEEK('1998-02-03') |
+---------------------------------------------------------+
| 3 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
DAYOFYEAR (ngày)
Trả về ngày trong năm cho ngày, trong phạm vi từ 1 đến 366.
mysql> SELECT DAYOFYEAR('1998-02-03');
+---------------------------------------------------------+
| DAYOFYEAR('1998-02-03') |
+---------------------------------------------------------+
| 34 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
TRÍCH (đơn vị TỪ ngày)
Hàm EXTRACT () sử dụng cùng loại mã định đơn vị như DATE_ADD () hoặc DATE_SUB (), nhưng trích xuất các phần từ ngày thay vì thực hiện số học ngày.
mysql> SELECT EXTRACT(YEAR FROM '1999-07-02');
+---------------------------------------------------------+
| EXTRACT(YEAR FROM '1999-07-02') |
+---------------------------------------------------------+
| 1999 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT EXTRACT(YEAR_MONTH FROM '1999-07-02 01:02:03');
+---------------------------------------------------------+
| EXTRACT(YEAR_MONTH FROM '1999-07-02 01:02:03') |
+---------------------------------------------------------+
| 199907 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
FROM_DAYS (N)
Cho một số ngày N, trả về giá trị DATE.
mysql> SELECT FROM_DAYS(729669);
+---------------------------------------------------------+
| FROM_DAYS(729669) |
+---------------------------------------------------------+
| 1997-10-07 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
Note- Sử dụng FROM_DAYS () một cách thận trọng vào các ngày cũ. Nó không được thiết kế để sử dụng với các giá trị trước sự ra đời của lịch Gregory (1582).
FROM_UNIXTIME (unix_timestamp)
FROM_UNIXTIME (unix_timestamp, định dạng)
Trả về một đại diện của unix_timestampđối số dưới dạng giá trị ở định dạng 'YYYY-MM-DD HH: MM: SS hoặc YYYYMMDDHHMMSS, tùy thuộc vào việc hàm được sử dụng trong chuỗi hay trong ngữ cảnh số. Giá trị được biểu thị theo múi giờ hiện tại. Đối số unix_timestamp là một giá trị dấu thời gian bên trong, được tạo ra bởiUNIX_TIMESTAMP() chức năng.
Nếu định dạng được cung cấp, kết quả được định dạng theo chuỗi định dạng, được sử dụng theo cách giống như được liệt kê trong mục nhập cho DATE_FORMAT() chức năng.
mysql> SELECT FROM_UNIXTIME(875996580);
+---------------------------------------------------------+
| FROM_UNIXTIME(875996580) |
+---------------------------------------------------------+
| 1997-10-04 22:23:00 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
HOUR (thời gian)
Trả về giờ cho thời gian. Phạm vi của giá trị trả về là 0 đến 23 đối với giá trị thời gian trong ngày. Tuy nhiên, phạm vi giá trị TIME thực sự lớn hơn nhiều, vì vậy HOUR có thể trả về giá trị lớn hơn 23.
mysql> SELECT HOUR('10:05:03');
+---------------------------------------------------------+
| HOUR('10:05:03') |
+---------------------------------------------------------+
| 10 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
LAST_DAY (ngày)
Lấy giá trị ngày tháng hoặc ngày giờ và trả về giá trị tương ứng cho ngày cuối cùng của tháng. Trả về NULL nếu đối số không hợp lệ.
mysql> SELECT LAST_DAY('2003-02-05');
+---------------------------------------------------------+
| LAST_DAY('2003-02-05') |
+---------------------------------------------------------+
| 2003-02-28 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
LOCALTIME và LOCALTIME ()
LOCALTIME và LOCALTIME () là từ đồng nghĩa của NOW ().
LOCALTIMESTAMP và LOCALTIMESTAMP ()
LOCALTIMESTAMP và LOCALTIMESTAMP () là từ đồng nghĩa với NOW ().
MAKEDATE (năm, hàng ngày)
Trả về một ngày, giá trị năm nhất định và ngày trong năm. Giá trị dayofyear phải lớn hơn 0 nếu không kết quả sẽ là NULL.
mysql> SELECT MAKEDATE(2001,31), MAKEDATE(2001,32);
+---------------------------------------------------------+
| MAKEDATE(2001,31), MAKEDATE(2001,32) |
+---------------------------------------------------------+
| '2001-01-31', '2001-02-01' |
+---------------------------------------------------------+
1 row in set (0.00 sec)
MAKETIME (giờ, phút, giây)
Trả về giá trị thời gian được tính từ các đối số giờ, phút và giây.
mysql> SELECT MAKETIME(12,15,30);
+---------------------------------------------------------+
| MAKETIME(12,15,30) |
+---------------------------------------------------------+
| '12:15:30' |
+---------------------------------------------------------+
1 row in set (0.00 sec)
MICROSECOND (expr)
Trả về micro giây từ biểu thức thời gian hoặc ngày giờ (expr) dưới dạng một số trong phạm vi từ 0 đến 999999.
mysql> SELECT MICROSECOND('12:00:00.123456');
+---------------------------------------------------------+
| MICROSECOND('12:00:00.123456') |
+---------------------------------------------------------+
| 123456 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
MINUTE (thời gian)
Trả về phút cho thời gian, trong phạm vi từ 0 đến 59.
mysql> SELECT MINUTE('98-02-03 10:05:03');
+---------------------------------------------------------+
| MINUTE('98-02-03 10:05:03') |
+---------------------------------------------------------+
| 5 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
Ngày tháng)
Trả về tháng cho ngày, trong phạm vi từ 0 đến 12.
mysql> SELECT MONTH('1998-02-03')
+---------------------------------------------------------+
| MONTH('1998-02-03') |
+---------------------------------------------------------+
| 2 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
MONTHNAME (ngày)
Trả về tên đầy đủ của tháng cho một ngày.
mysql> SELECT MONTHNAME('1998-02-05');
+---------------------------------------------------------+
| MONTHNAME('1998-02-05') |
+---------------------------------------------------------+
| February |
+---------------------------------------------------------+
1 row in set (0.00 sec)
HIỆN NAY()
Trả về ngày và giờ hiện tại dưới dạng giá trị ở định dạng 'YYYY-MM-DD HH: MM: SS' hoặc YYYYMMDDHHMMSS, tùy thuộc vào việc hàm được sử dụng trong ngữ cảnh chuỗi hay số. Giá trị này được biểu thị bằng múi giờ hiện tại.
mysql> SELECT NOW();
+---------------------------------------------------------+
| NOW() |
+---------------------------------------------------------+
| 1997-12-15 23:50:26 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
PERIOD_ADD (P, N)
Thêm N tháng vào khoảng thời gian P (ở định dạng YYMM hoặc YYYYMM). Trả về một giá trị ở định dạng YYYYMM. Lưu ý rằng đối số khoảng thời gian P không phải là giá trị ngày tháng.
mysql> SELECT PERIOD_ADD(9801,2);
+---------------------------------------------------------+
| PERIOD_ADD(9801,2) |
+---------------------------------------------------------+
| 199803 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
PERIOD_DIFF (P1, P2)
Trả về số tháng giữa các khoảng thời gian P1 và P2. Các khoảng thời gian P1 và P2 này phải ở định dạng YYMM hoặc YYYYMM. Lưu ý rằng các đối số dấu chấm P1 và P2 không phải là giá trị ngày tháng.
mysql> SELECT PERIOD_DIFF(9802,199703);
+---------------------------------------------------------+
| PERIOD_DIFF(9802,199703) |
+---------------------------------------------------------+
| 11 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
QUARTER (ngày)
Trả về phần tư của năm cho ngày, trong phạm vi từ 1 đến 4.
mysql> SELECT QUARTER('98-04-01');
+---------------------------------------------------------+
| QUARTER('98-04-01') |
+---------------------------------------------------------+
| 2 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
Lần thứ hai)
Trả về thời gian thứ hai, trong phạm vi từ 0 đến 59.
mysql> SELECT SECOND('10:05:03');
+---------------------------------------------------------+
| SECOND('10:05:03') |
+---------------------------------------------------------+
| 3 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
SEC_TO_TIME (giây)
Trả về đối số giây, được chuyển đổi thành giờ, phút và giây, dưới dạng giá trị ở định dạng 'HH: MM: SS' hoặc HHMMSS, tùy thuộc vào việc hàm được sử dụng trong ngữ cảnh chuỗi hay số.
mysql> SELECT SEC_TO_TIME(2378);
+---------------------------------------------------------+
| SEC_TO_TIME(2378) |
+---------------------------------------------------------+
| 00:39:38 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
STR_TO_DATE (str, định dạng)
Đây là nghịch đảo của hàm DATE_FORMAT (). Nó có một chuỗi str và một định dạng chuỗi định dạng. Hàm STR_TO_DATE () trả về giá trị DATETIME nếu chuỗi định dạng chứa cả phần ngày và giờ. Ngược lại, nó trả về giá trị DATE hoặc TIME nếu chuỗi chỉ chứa các phần ngày hoặc giờ.
mysql> SELECT STR_TO_DATE('04/31/2004', '%m/%d/%Y');
+---------------------------------------------------------+
| STR_TO_DATE('04/31/2004', '%m/%d/%Y') |
+---------------------------------------------------------+
| 2004-04-31 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
SUBDATE (ngày, đơn vị INTERVAL expr) và SUBDATE (expr, days)
Khi được gọi với dạng INTERVAL của đối số thứ hai, SUBDATE () là một từ đồng nghĩa với DATE_SUB (). Để biết thông tin về đối số đơn vị INTERVAL, hãy xem thảo luận cho DATE_ADD ().
mysql> SELECT DATE_SUB('1998-01-02', INTERVAL 31 DAY);
+---------------------------------------------------------+
| DATE_SUB('1998-01-02', INTERVAL 31 DAY) |
+---------------------------------------------------------+
| 1997-12-02 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT SUBDATE('1998-01-02', INTERVAL 31 DAY);
+---------------------------------------------------------+
| SUBDATE('1998-01-02', INTERVAL 31 DAY) |
+---------------------------------------------------------+
| 1997-12-02 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
SUBTIME (expr1, expr2)
Hàm SUBTIME () trả về expr1. expr2 được biểu thị dưới dạng một giá trị có cùng định dạng với expr1. Giá trị expr1 là một biểu thức thời gian hoặc ngày tháng, trong khi giá trị expr2 là một biểu thức thời gian.
mysql> SELECT SUBTIME('1997-12-31 23:59:59.999999',
-> '1 1:1:1.000002');
+---------------------------------------------------------+
| SUBTIME('1997-12-31 23:59:59.999999'... |
+---------------------------------------------------------+
| 1997-12-30 22:58:58.999997 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
SYSDATE ()
Trả về ngày và giờ hiện tại dưới dạng giá trị ở định dạng 'YYYY-MM-DD HH: MM: SS' hoặc YYYYMMDDHHMMSS, tùy thuộc vào việc hàm được sử dụng trong chuỗi hay trong ngữ cảnh số.
mysql> SELECT SYSDATE();
+---------------------------------------------------------+
| SYSDATE() |
+---------------------------------------------------------+
| 2006-04-12 13:47:44 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
TIME (expr)
Trích xuất phần thời gian của biểu thức thời gian hoặc ngày giờ expr và trả về nó dưới dạng một chuỗi.
mysql> SELECT TIME('2003-12-31 01:02:03');
+---------------------------------------------------------+
| TIME('2003-12-31 01:02:03') |
+---------------------------------------------------------+
| 01:02:03 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
TIMEDIFF (expr1, expr2)
Hàm TIMEDIFF () trả về expr1. expr2 được biểu thị dưới dạng giá trị thời gian. Các giá trị expr1 và expr2 này là thời gian hoặc biểu thức ngày và giờ, nhưng cả hai phải cùng loại.
mysql> SELECT TIMEDIFF('1997-12-31 23:59:59.000001',
-> '1997-12-30 01:01:01.000002');
+---------------------------------------------------------+
| TIMEDIFF('1997-12-31 23:59:59.000001'..... |
+---------------------------------------------------------+
| 46:58:57.999999 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
TIMESTAMP (expr), TIMESTAMP (expr1, expr2)
Với một đối số duy nhất, hàm này trả về ngày tháng hoặc biểu thức datetime expr dưới dạng giá trị datetime. Với hai đối số, nó thêm biểu thức thời gian expr2 vào ngày tháng hoặc biểu thức datetimeexpr1 và trả về kết quả dưới dạng giá trị ngày giờ.
mysql> SELECT TIMESTAMP('2003-12-31');
+---------------------------------------------------------+
| TIMESTAMP('2003-12-31') |
+---------------------------------------------------------+
| 2003-12-31 00:00:00 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
TIMESTAMPADD (đơn vị, khoảng thời gian, datetime_expr)
Hàm này thêm khoảng biểu thức số nguyên vào ngày tháng hoặc biểu thức ngày giờ datetime_expr. Đơn vị cho khoảng thời gian được đưa ra bởi đối số đơn vị, phải là một trong các giá trị sau:
- FRAC_SECOND
- SECOND, MINUTE
- HOUR, DAY
- WEEK
- MONTH
- QUARTER hoặc
- YEAR
Giá trị đơn vị có thể được chỉ định bằng cách sử dụng một trong các từ khóa như được hiển thị hoặc với tiền tố SQL_TSI_.
Ví dụ: DAY và SQL_TSI_DAY đều hợp pháp.
mysql> SELECT TIMESTAMPADD(MINUTE,1,'2003-01-02');
+---------------------------------------------------------+
| TIMESTAMPADD(MINUTE,1,'2003-01-02') |
+---------------------------------------------------------+
| 2003-01-02 00:01:00 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
TIMESTAMPDIFF (đơn vị, datetime_expr1, datetime_expr2)
Trả về sự khác biệt số nguyên giữa ngày hoặc biểu thức ngày giờ datetime_expr1 và datetime_expr2. Đơn vị cho kết quả được đưa ra bởi đối số đơn vị. Các giá trị pháp lý cho đơn vị giống như các giá trị được liệt kê trong mô tả của hàm TIMESTAMPADD ().
mysql> SELECT TIMESTAMPDIFF(MONTH,'2003-02-01','2003-05-01');
+---------------------------------------------------------+
| TIMESTAMPDIFF(MONTH,'2003-02-01','2003-05-01') |
+---------------------------------------------------------+
| 3 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
TIME_FORMAT (thời gian, định dạng)
Hàm này được sử dụng giống như hàm DATE_FORMAT (), nhưng chuỗi định dạng chỉ có thể chứa các từ định dạng cho giờ, phút và giây.
Nếu giá trị thời gian chứa phần giờ lớn hơn 23, thì%H và%k Các mã định dạng giờ tạo ra giá trị lớn hơn phạm vi thông thường từ 0 đến 23. Các mã định dạng giờ khác tạo ra mô-đun giá trị giờ 12.
mysql> SELECT TIME_FORMAT('100:00:00', '%H %k %h %I %l');
+---------------------------------------------------------+
| TIME_FORMAT('100:00:00', '%H %k %h %I %l') |
+---------------------------------------------------------+
| 100 100 04 04 4 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
TIME_TO_SEC (thời gian)
Trả về đối số thời gian được chuyển đổi thành giây.
mysql> SELECT TIME_TO_SEC('22:23:00');
+---------------------------------------------------------+
| TIME_TO_SEC('22:23:00') |
+---------------------------------------------------------+
| 80580 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
TO_DAYS (ngày)
Đã cho một ngày, trả về một số ngày (số ngày kể từ năm 0).
mysql> SELECT TO_DAYS(950501);
+---------------------------------------------------------+
| TO_DAYS(950501) |
+---------------------------------------------------------+
| 728779 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
UNIX_TIMESTAMP (), UNIX_TIMESTAMP (ngày)
Nếu được gọi không có đối số, hàm này trả về dấu thời gian Unix (giây kể từ '1970-01-01 00:00:00' UTC) dưới dạng số nguyên không dấu. Nếu UNIX_TIMESTAMP () được gọi với một đối số ngày, nó trả về giá trị của đối số dưới dạng giây kể từ '1970-01-01 00:00:00' UTC. ngày có thể là chuỗi DATE, chuỗi DATETIME, TIMESTAMP hoặc một số ở định dạng YYMMDD hoặc YYYYMMDD.
mysql> SELECT UNIX_TIMESTAMP();
+---------------------------------------------------------+
| UNIX_TIMESTAMP() |
+---------------------------------------------------------+
| 882226357 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT UNIX_TIMESTAMP('1997-10-04 22:23:00');
+---------------------------------------------------------+
| UNIX_TIMESTAMP('1997-10-04 22:23:00') |
+---------------------------------------------------------+
| 875996580 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
UTC_DATE, UTC_DATE ()
Trả về ngày UTC hiện tại dưới dạng giá trị ở định dạng 'YYYY-MM-DD' hoặc YYYYMMDD, tùy thuộc vào việc hàm được sử dụng trong ngữ cảnh chuỗi hay số.
mysql> SELECT UTC_DATE(), UTC_DATE() + 0;
+---------------------------------------------------------+
| UTC_DATE(), UTC_DATE() + 0 |
+---------------------------------------------------------+
| 2003-08-14, 20030814 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
UTC_TIME, UTC_TIME ()
Trả về thời gian UTC hiện tại dưới dạng giá trị ở định dạng 'HH: MM: SS' hoặc HHMMSS, tùy thuộc vào việc hàm được sử dụng trong ngữ cảnh chuỗi hay số.
mysql> SELECT UTC_TIME(), UTC_TIME() + 0;
+---------------------------------------------------------+
| UTC_TIME(), UTC_TIME() + 0 |
+---------------------------------------------------------+
| 18:07:53, 180753 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
UTC_TIMESTAMP, UTC_TIMESTAMP ()
Trả về ngày và giờ UTC hiện tại dưới dạng giá trị trong 'YYYY-MM-DD HH: MM: SS' hoặc ở định dạng YYYYMMDDHHMMSS, tùy thuộc vào việc hàm được sử dụng trong chuỗi hay trong ngữ cảnh số.
mysql> SELECT UTC_TIMESTAMP(), UTC_TIMESTAMP() + 0;
+---------------------------------------------------------+
| UTC_TIMESTAMP(), UTC_TIMESTAMP() + 0 |
+---------------------------------------------------------+
| 2003-08-14 18:08:04, 20030814180804 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
TUẦN (ngày [, chế độ])
Hàm này trả về số tuần cho ngày. Dạng hai đối số của WEEK () cho phép bạn chỉ định tuần bắt đầu vào Chủ Nhật hay Thứ Hai và giá trị trả về phải nằm trong phạm vi từ 0 đến 53 hoặc từ 1 đến 53. Nếu đối số chế độ bị bỏ qua, giá trị của biến hệ thống default_week_format được sử dụng
Chế độ | Ngày đầu tuần | Phạm vi | Tuần 1 là tuần đầu tiên. |
---|---|---|---|
0 | chủ nhật | 0-53 | với một ngày chủ nhật trong năm nay |
1 | Thứ hai | 0-53 | với hơn 3 ngày trong năm nay |
2 | chủ nhật | 1-53 | với một ngày chủ nhật trong năm nay |
3 | Thứ hai | 1-53 | với hơn 3 ngày trong năm nay |
4 | chủ nhật | 0-53 | với hơn 3 ngày trong năm nay |
5 | Thứ hai | 0-53 | với một ngày thứ Hai trong năm nay |
6 | chủ nhật | 1-53 | với hơn 3 ngày trong năm nay |
7 | Thứ hai | 1-53 | với một ngày thứ Hai trong năm nay |
mysql> SELECT WEEK('1998-02-20');
+---------------------------------------------------------+
| WEEK('1998-02-20') |
+---------------------------------------------------------+
| 7 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
WEEKDAY (ngày)
Trả về chỉ số ngày trong tuần cho ngày (0 = Thứ Hai, 1 = Thứ Ba,. 6 = Chủ Nhật).
mysql> SELECT WEEKDAY('1998-02-03 22:23:00');
+---------------------------------------------------------+
| WEEKDAY('1998-02-03 22:23:00') |
+---------------------------------------------------------+
| 1 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
WEEKOFYEAR (ngày)
Trả về tuần lịch của ngày dưới dạng một số trong phạm vi từ 1 đến 53. WEEKOFYEAR () là một hàm tương thích tương đương với WEEK (ngày, 3).
mysql> SELECT WEEKOFYEAR('1998-02-20');
+---------------------------------------------------------+
| WEEKOFYEAR('1998-02-20') |
+---------------------------------------------------------+
| 8 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
YEAR (ngày)
Trả về năm cho ngày, trong phạm vi 1000 đến 9999 hoặc 0 cho .zero. ngày.
mysql> SELECT YEAR('98-02-03');
+---------------------------------------------------------+
| YEAR('98-02-03') |
+---------------------------------------------------------+
| 1998 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
YEARWEEK (ngày), YEARWEEK (ngày, chế độ)
Trả về năm và tuần cho một ngày. Đối số mode hoạt động chính xác như đối số mode đối với hàm WEEK (). Năm trong kết quả có thể khác với năm trong đối số ngày cho tuần đầu tiên và tuần cuối cùng của năm.
mysql> SELECT YEARWEEK('1987-01-01');
+---------------------------------------------------------+
| YEAR('98-02-03')YEARWEEK('1987-01-01') |
+---------------------------------------------------------+
| 198653 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
Note - Số tuần khác với số mà hàm WEEK () sẽ trả về (0) cho các đối số tùy chọn 0 hoặc 1, vì WEEK () sau đó trả về tuần trong ngữ cảnh của năm nhất định.