Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Ví dụ về SUBTIME () - MySQL

Trong MySQL, bạn có thể sử dụng SUBTIME() hàm để trừ một giá trị thời gian khỏi một biểu thức thời gian hoặc ngày giờ.

Cách nó hoạt động là, bạn cung cấp hai đối số; đầu tiên là giá trị thời gian hoặc ngày giờ và thứ hai là giá trị thời gian. SUBTIME() sau đó hàm trừ đối số thứ hai khỏi đối số đầu tiên và trả về kết quả.

Cú pháp

Cú pháp như sau:

SUBTIME(expr1,expr2)

Trong đó expr1 có thể là một biểu thức thời gian hoặc ngày giờ và expr2 là một biểu thức thời gian.

Và vì vậy expr2 được trừ khỏi expr1 .

Ví dụ 1 - Cách sử dụng cơ bản

Đây là một ví dụ để chứng minh.

SELECT SUBTIME('12:35:00', '1:30');

Kết quả:

+-----------------------------+
| SUBTIME('12:35:00', '1:30') |
+-----------------------------+
| 11:05:00                    |
+-----------------------------+

Ví dụ 2 - Trừ đi số giây

Trong ví dụ này, tôi cũng trừ một số giây cho giá trị thời gian.

SELECT SUBTIME('12:35:00', '1:30:30');

Kết quả:

+--------------------------------+
| SUBTIME('12:35:00', '1:30:30') |
+--------------------------------+
| 11:04:30                       |
+--------------------------------+

Và chúng tôi nhận được cùng một kết quả ngay cả khi chúng tôi bỏ qua phần giây khỏi đối số thời gian ban đầu.

SELECT SUBTIME('12:35', '1:30:30');

Kết quả:

+-----------------------------+
| SUBTIME('12:35', '1:30:30') |
+-----------------------------+
| 11:04:30                    |
+-----------------------------+

Ví dụ 3 - Giây phân số

Bạn cũng có thể trừ phần giây phân số.

SELECT SUBTIME('12:35:00.888888', '1:30:30.555555');

Kết quả:

+----------------------------------------------+
| SUBTIME('12:35:00.888888', '1:30:30.555555') |
+----------------------------------------------+
| 11:04:30.333333                              |
+----------------------------------------------+

Ví dụ 4 - Kết quả phủ định

Sẽ khá hợp lệ khi kết thúc bằng một giá trị âm cho kết quả của bạn.

SELECT SUBTIME('12:35:00', '20:30:30');

Kết quả:

+---------------------------------+
| SUBTIME('12:35:00', '20:30:30') |
+---------------------------------+
| -07:55:30                       |
+---------------------------------+

Ví dụ 5 - Trừ một giá trị ngày giờ

Trong ví dụ này, tôi trừ một giá trị ngày giờ (trái ngược với chỉ một giá trị thời gian như trong các ví dụ trước).

SELECT SUBTIME('2021-01-01 12:35:00', '1:30:30');

Kết quả:

+-------------------------------------------+
| SUBTIME('2021-01-01 12:35:00', '1:30:30') |
+-------------------------------------------+
| 2021-01-01 11:04:30                       |
+-------------------------------------------+

Trong trường hợp này, phần ngày không thay đổi, vì đối số thứ hai không đủ lớn để ảnh hưởng đến phần đó.

Trong ví dụ tiếp theo này, tôi tăng đối số thứ hai để nó đủ lớn để ảnh hưởng đến phần ngày tháng.

SELECT SUBTIME('2021-01-01 12:35:00', '100:30:30');

Kết quả:

+---------------------------------------------+
| SUBTIME('2021-01-01 12:35:00', '100:30:30') |
+---------------------------------------------+
| 2020-12-28 08:04:30                         |
+---------------------------------------------+

Như đã thấy trong ví dụ này, các giá trị thời gian không bị giới hạn dưới 24 giờ (chúng có thể nằm trong khoảng từ -838:59:59 thành 838:59:59 .

Tuy nhiên, bạn cũng có thể làm những việc như sau:

SELECT SUBTIME('2021-01-01 12:35:00', '4 4:30:30');

Kết quả:

+---------------------------------------------+
| SUBTIME('2021-01-01 12:35:00', '4 4:30:30') |
+---------------------------------------------+
| 2020-12-28 08:04:30                         |
+---------------------------------------------+

Ví dụ 6 - Giới hạn của Giá trị thời gian

Như đã đề cập, kiểu dữ liệu thời gian có thể nằm trong khoảng từ -838:59:59 thành 838:59:59 . Điều này có nghĩa là bạn không thể trừ thêm nữa. Điều đó cũng có nghĩa là kết quả không thể nằm ngoài phạm vi này. Ví dụ:bạn không thể làm điều này:

SELECT SUBTIME('12:35:00', '20000000:30:30');

Kết quả:

+---------------------------------------+
| SUBTIME('12:35:00', '20000000:30:30') |
+---------------------------------------+
| -826:24:59                            |
+---------------------------------------+
1 row in set, 1 warning (0.01 sec)

Kết quả là hoàn toàn sai và MySQL hiển thị cảnh báo.

Nhưng đó không chỉ là lập luận thứ hai mà bạn cần phải cẩn thận. Bạn cũng sẽ gặp phải vấn đề tương tự nếu đối số đầu tiên ban đầu là giá trị âm:

SELECT SUBTIME('-800:35:00', '50:30:30');

Kết quả:

+-----------------------------------+
| SUBTIME('-800:35:00', '50:30:30') |
+-----------------------------------+
| -838:59:59                        |
+-----------------------------------+
1 row in set, 1 warning (0.00 sec)

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sử dụng Passport với Sequelize và MySQL

  2. Sử dụng các công cụ lưu trữ MySQL khác nhau trong thiết kế cơ sở dữ liệu

  3. Tắt ONLY_FULL_GROUP_BY

  4. Dấu thời gian với độ chính xác mili giây:Cách lưu chúng trong MySQL

  5. mysql - bao nhiêu cột là quá nhiều?