Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.freetuts.net, không được copy dưới mọi hình thức.
1. Mô tả
Hàm
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)
2 trả về chênh lệch (được biểu thị dưới dạng giá trị thời gian) giữa hai giá trị giờ/ngày giờ.
2. Cú pháp
Cú pháp của hàm
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)
2 trong
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)
3 là:
Trong đó:
Bài viết này được đăng tại [free tuts .net]
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)
7,
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)
8: Hai giờ/ngày giờ để tính toán sự khác biệt. Phép tính là time1 - time2.
Lưu ý:
Giá trị thời gian có thể dao động từ -838: 59: 59 'đến' 838: 59: 59 '.
Khi sử dụng hàm
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)
2, cả time1 và time2 phải là cả hai giá trị giờ hoặc cả hai giá trị ngày giờ. Không thể có một giá trị giờ và giá trị kia là giá trị ngày giờ hoặc hàm
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)
2 sẽ trả về giá trị NULL.
3. Version
Hàm
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)
2 có thể được sử dụng trong các phiên bản sau của
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)
3:
MySQL 5.7, MySQL 5.6, MySQL 5.5, MySQL 5.1, MySQL 5.0, MySQL 4.1.1
4. Ví dụ
mysql> SELECT TIMEDIFF('2019-04-01 20:30:20', '2019-03-30 18:10:07');
Ket qua: '50:20:13'
mysql> SELECT TIMEDIFF('15:15:08', '14:20:07');
Ket qua: '00:55:01'
mysql> SELECT TIMEDIFF('16:41:14', '12:10:08');
Ket qua: '04:31:06'
mysql> SELECT TIMEDIFF('2019-04-10 17:17:05', '2019-01-15 15:10:08');
Ket qua: '838:59:59'
mysql> SELECT TIMEDIFF('2019-04-15 17:12:05', '12:10:08');
Ket qua: NULL
Trả về năm cho date, trong dãy từ 1000 tới 9999, hoặc 0 cho .zero. date.
Hàm YEARWEEK(date), YEARWEEK(date,mode)
Hàm trả về năm và tuần cho một date. Tham số mode làm việc tương tự như tham số mode trong hàm WEEK(). Năm trong kết quả trả về phải khác năm trong tham số date, bởi vì tuần đầu tiên và tuần cuối cùng của năm.
Để có thêm thông tin về các hàm trên, bạn truy cập: MySQL Official Website - Date and Time Functions
Bảng dưới liệt kê tất cả các hàm quan trọng liên quan tới xử lý Date và Time trong MySQL. Có các hàm đa dạng khác nhau được hỗ trợ bởi RDBMS của bạn. Danh sách dưới đây dựa trên MySQL RDBMS.
Tên
Miêu tả
Hàm ADDDATE()
Cộng các date
Hàm ADDTIME()
Cộng time
Hàm CONVERT_TZ()
Chuyển đổi từ một Timezone tới Timezone khác
Hàm CURRENT_TIME(), CURRENT_TIME
Giống hàm CURTIME()
Hàm CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP
Giống hàm NOW()
Hàm CURTIME()
Returns the current time
Hàm DATE_ADD()
Cộng hai date
Hàm DATE_FORMAT()
Định dạng date như đã được xác định
Hàm DATE_SUB()
Trừ hai date cho nhau
Hàm DATE()
Trích một phần của biểu thức biểu diễn date hoặc datetime
Hàm DATEDIFF()
Trừ hai date cho nhau
Hàm DATE()
Trích một phần của biểu thức biểu diễn date hoặc datetime
Hàm DATEDIFF()
Hàm DAY()
Giống hàm DAYOFMONTH()
Hàm DAYNAME()
Trả về tên của ngày trong tuần
Hàm DAYOFMONTH()
Trả về ngày trong tháng (1-31)
Hàm DAYOFWEEK()
Trả về chỉ mục ngày trong tuần của tham số
Hàm DAYOFYEAR()
Trả về ngày trong năm (1-366)
Hàm EXTRACT
Trích một phần biểu diễn của một date
Hàm FROM_DAYS()
Chuyển đổi một số biểu diễn ngày thành date
Hàm FROM_UNIXTIME()
Định dạng date ở dạng UNIX timestamp
Hàm HOUR()
Trích giờ từ biểu thức biểu diễn date
Giống hàm NOW()
Hàm LAST_DAY
Giống hàm NOW()
Trả về ngày cuối cùng của tháng cho tham số
Hàm LOCALTIME(), LOCALTIME
Hàm LOCALTIMESTAMP, LOCALTIMESTAMP()
Hàm MAKEDATE()
Tạo một date từ năm và ngày trong năm
Hàm MAKETIME
Trả về một giá trị time đã được ước lượng từ các tham số hour, minute, và second
Hàm MICROSECOND()
Trả về số microsecond từ tham số
Hàm MINUTE()
Trả về phút từ tham số
Hàm MONTH()
Trả về tháng từ date đã truyền
Hàm MONTHNAME()
Trả về tên tháng
Hàm NOW()
Trả về date và time hiện tại
Hàm PERIOD_ADD()
Thêm một period tới một year-month
Hàm PERIOD_DIFF()
Trả về số các tháng giữa các period
Hàm QUARTER()
Trả về Quí từ một tham số date
Hàm SEC_TO_TIME()
Chuyển đổi giây sang định dạng 'HH:MM:SS'
Hàm SECOND()
Trả về giây (0-59)
Hàm STR_TO_DATE()
Chuyển đổi một chuỗi thành một date
Hàm SUBDATE()
Khi được triệu hồi với bat ham số, hàm này giống hàm DATE_SUB()
Hàm SUBTIME()
Trừ các time cho nhau
Hàm SYSDATE()
Trả về time tại đó hàm thực thi
Hàm TIME_FORMAT()
Định dạng ở dạng time
Hàm TIME_TO_SEC()
Trả về tham số được chuyển đổi thành số giây
Hàm SUBDATE()
Khi được triệu hồi với bat ham số, hàm này giống hàm DATE_SUB()
Hàm SUBTIME()
Trừ các time cho nhau
Hàm SYSDATE()
Trả về time tại đó hàm thực thi
Hàm TIME_FORMAT()
Định dạng ở dạng time
Hàm TIME_TO_SEC()
Trả về tham số được chuyển đổi thành số giây
Hàm TIME()
Trích một phần time từ biểu thức đã truyền
Hàm TIMEDIFF()
Hàm TIMESTAMP()
Với một tham số đơn, hàm này trả về biểu thức date hoặc datetime. Với hai tham số, nó tính tổng hai tham số
Hàm TIMESTAMPADD()
Cộng mỗi khoảng thời gian vào một biểu thức datetime
Hàm TIMESTAMPDIFF()
Trừ đi một khoảng thời gian từ một biểu thức datetime
Hàm TO_DAYS()
Trả về tham số date đã được chuyển đổi thành các ngày
Hàm UNIX_TIMESTAMP()
Trả về một UNIX timestamp
Hàm UTC_DATE()
Trả về UTC date hiện tại
Hàm UTC_TIME()
Trả về UTC time hiện tại
Hàm UTC_TIMESTAMP()
Trả về UTC date và time hiện tại DATE_ADD(). Hàm SUBDATE() là giống hàm DATE_SUB(). Để hiểu chi tiết về tham số INTERVAL, bạn xem hàm DATE_ADD().
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)
Khi được triệu hồi với tham số thứ hai INTERVAL, hàm ADDDATE() là giống hàm DATE_ADD(). Hàm SUBDATE() là giống hàm DATE_SUB(). Để hiểu chi tiết về tham số INTERVAL, bạn xem hàm DATE_ADD().
Khi được triệu hồi với các days của tham số thứ hai, MySQL xem nó như là một số nguyên để được cộng vào expr.
Hàm ADDTIME(expr1,expr2)
Hàm ADDTIME() cộng expr2 với expr1 và trả về kết quả. Tham số expr1 là một biểu thức time hoặc datetime, và expr2 là một biểu thức time.
Hàm CONVERT_TZ(dt,from_tz,to_tz)
Hàm này chuyển đổi một giá trị datetime dt từ Timezone đã cho bởi from_tz sang Timezone đã cho bởi to_tz và trả về giá trị kết quả. Hàm này trả về NULL nếu các tham số là không hợp lệ.
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)
Hàm CURDATE()
Trả về date dưới dạng một giá trị trong định dạng 'YYYY-MM-DD' hoặc YYYYMMDD, phụ thuộc vào hàm này được sử dụng trong ngữ cảnh chuỗi hay ngữ cảnh số.
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)
Hàm CURRENT_DATE và CURRENT_DATE()
Các hàm này thực hiện các phép toán số học trên date. Ở đây, date là một giá trị DATE hoặc DATETIME mà xác định date 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 hoặc bị trừ từ date ban đầu. Tham số 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 nên được thông dịch.
Từ khóa INTERVAL và unit specifier là không phân biệt kiểu chữ.
Bảng dưới liệt kê các form của tham số expr cho mỗi giá trị unit:
Giá trị unit unit
Định dạngexpr expr
MICROSECOND
MICROSECONDS
SECOND
SECONDS
MINUTE
MINUTES
HOUR
HOURS
DAY
DAYS
WEEK
WEEKS
MONTH
MONTHS
QUARTER
QUARTERS
YEAR
YEARS
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 HOURS:MINUTES:SECONDS'
DAY_MINUTE
'DAYS HOURS:MINUTES'
DAY_HOUR
'DAYS HOURS'
YEAR_MONTH
'YEARS-MONTHS'
Các giá trị QUARTER và WEEK là có sẵn bắt đầu từ MySQL 5.0.0.
Hàm EXTRACT() sử dụng các unit specifier giống như hàm DATE_ADD() hoặc 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.
Trả về một biểu diễn của tham số unix_timestamp dưới dạng một giá trị trong định dạng 'YYYY-MM-DD HH:MM:SS' hoặc YYYYMMDDHHMMSS, phụ thuộc vào hàm này được sử dụng trong ngữ cảnh chuỗi hay ngữ cảnh số. Giá trị được biểu diễn trong Timezone hiện tại. Tham số unix_timestamp là một giá trị timestamp nội tại được tạo bởi hàm UNIX_TIMESTAMP().
Nếu format được cung cấp, kết quả được định dạng theo chuỗi format, mà được sử dụng giống như cách đã được liệt kê trong hàm DATE_FORMAT().
Trả về date và time hiện tại dưới dạng một giá trị trong định dạng 'YYYY-MM-DD HH:MM:SS' hoặc YYYYMMDDHHMMSS, phụ thuộc vào hàm được sử dụng trong ngữ cảnh chuỗi hay ngữ cảnh số. Giá trị được biểu diễn trong Timezone hiện tại.
Cộng N tháng vào period P (trong định dạng YYMM hoặc YYYYMM). Trả về một giá trị trong định dạng YYYYMM. Ghi chú rằng tham số P không phải là một giá trị date.
Trả về tham số seconds, đã được biến đổi thành giờ, phút, giây, trong định dạng 'HH:MM:SS' hoặc HHMMSS, phục thuộc vào hàm được sử dụng trong ngữ cảnh số hay ngữ cảnh chuỗi.
Hàm này ngược với hàm DATE_FORMAT(). Nó nhận một chuỗi str và một định dạng chuỗi format. Hàm STR_TO_DATE() trả về một giá trị DATETIME nếu định dạng chuỗi chứa cả hai phần date và time hoặc một giá trị DATE hoặc TIME nếu chuỗi chỉ chứa các phần date hoặc time.
Hàm SUBDATE(date,INTERVAL expr unit) và SUBDATE(expr,days)
Khi được triệu hồi với tham số thứ hai INTERNAL, hàm SUBDATE() giống hàm DATE_SUB(). Để có thông tin chi tiết về tham số INTERNAL, bạn theo dõi hàm DATE_ADD().
Hàm SUBTIME() trả về kết quả expr1 – expr2 được biểu diễn dưới dạng một giá trị trong cùng định dạng với expr1. Tham số expr1 là một biểu thức time hoặc datetime, và expr2 là một time.
Trả về date và time hiện tại dưới dạng một giá trị trong định dạng 'YYYY-MM-DD HH:MM:SS' hoặc YYYYMMDDHHMMSS, phụ thuộc vào hàm được sử dụng trong ngữ cảnh chuỗi hay ngữ cảnh số.
Với một tham số đơn, hàm này trả về biểu thức expr biểu diễn date hoặc datetime dưới dạng một giá trị datetime. Với hai tham số, hàm này tính tổng expr1 và expr2 và trả về kết quả dưới dạng một giá trị datetime.
Cộng một biểu thức interval số nguyên vào biểu thức datetime_expr. Đơn vị cho interval được cung cấp bởi tham số unit, nên là một trong các giá trị: FRAC_SECOND, SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER hoặc YEAR.
Giá trị unit có thể được xác định bởi sử dụng một trong các từ khóa trên hoặc với một tiền tố là SQL_TSI_. Ví dụ, DAY và SQL_TSI_DAY đều hợp lệ.
Trả về sự khác nhau (được biểu diễn dạng số nguyên) giữa các biểu thức biểu diễn date hoặc datetime là datetime_expr1 và datetime_expr2. Đơn vị cho kết quả được cung cấp bởi tham số unit. Các giá trị hợp lệ của unit là tương tự như đã được liệt kê trong phần miêu tả hàm TIMESTAMPADD().
Nếu hàm được gọi với 0 tham số, hàm sẽ trả về một Unix Timestamp (số giây từ '1970-01-01 00:00:00' UTC) dưới dạng một số unsigned int. Nếu hàm này được gọi với một tham số date, nó trả về giá trị của tham số dưới dạng số giây từ '1970-01-01 00:00:00' UTC. Tham số date có thể là một chuỗi DATE, một chuỗi DATETIME, một TIMESTAMP, hoặc một số trong định dạng YYMMDD hoặc YYYYMMDD.
Trả về UTC date hiện tại dưới dạng một giá trị trong định dạng 'YYYY-MM-DD' hoặc YYYYMMDD, phụ thuộc vào hàm được sử dụng trong ngữ cảnh chuỗi hay ngữ cảnh số.
Trả về UTC time hiện tại dưới dạng một giá trị trong định dạng 'HH:MM:SS' hoặc HHMMSS, phụ thuộc vào hàm được sử dụng trong ngữ cảnh chuỗi hay ngữ cảnh số.
Trả về UTC date và time hiện tại dưới dạng một giá trị trong định dạng 'YYYY-MM-DD HH:MM:SS' hoặc YYYYMMDDHHMMSS, phụ thuộc vào hàm được sử dụng trong ngữ cảnh chuỗi hay ngữ cảnh số.
Hàm này trả về số tuần cho date. Tham số thứ hai của hàm WEEK() cho phép bạn xác định rằng tuần bắt đầu từ Sunday hay Monday và xác định rằng giá trị nên trong dãy từ 0 tới 53 hay từ 1 tới 53. Nếu tham số mode này bị bỏ qua, giá trị của biến hệ thống default_week_format sẽ được sử dụng.