Vấn đề:
Bạn muốn thêm một khoảng thời gian nhất định vào giá trị ngày giờ trong cơ sở dữ liệu MySQL.
Ví dụ:
Cơ sở dữ liệu của chúng tôi có một bảng có tên flight_schedule
với dữ liệu trong các cột flight
, aircraft
và arrival_datetime
.
máy bay | doing_datetime | |
---|---|---|
EK10 | L1201 | 2019-04-20 15:15:00 |
AY12 | K2001 | 2019-03-31 20:10:00 |
LA105 | F205 | 2019-08-03 11:15:00 |
LH30 | K256 | 2019-07-01 12:47:00 |
Đối với mỗi chuyến bay, hãy lấy mã chuyến bay, mã máy bay và ngày giờ đến mới. Để tính toán new_arrival_datetime
, chúng tôi sẽ thêm 2 giờ 10 phút vào thời gian hiện tại cho mỗi chuyến đến - đó là số chuyến bay này đã bị hoãn.
Giải pháp:
Chúng tôi sẽ sử dụng ADDTIME()
hàm số. Đây là truy vấn bạn sẽ viết:
SELECT flight, aircraft, ADDTIME(arrival_datetime, ‘2:10’) AS new_arrival_datetime FROM flight_schedule;
Đây là kết quả của truy vấn:
Chuyến baymáy bay | new_arrival_datetime | |
---|---|---|
EK10 | L1201 | 2019-04-20 17:25:00 |
AY12 | K2001 | 2019-03-31 22:20:00 |
LA105 | F205 | 2019-08-03 13:25:00 |
LH30 | K256 | 2019-07-01 14:57:00 |
Thảo luận:
Sử dụng hàm ADDTIME () nếu bạn muốn chọn một ngày giờ mới bằng cách thêm một thời gian nhất định vào giá trị datetime / timestamp / time.
Hàm này có hai đối số. Đối số đầu tiên là ngày / giờ mà chúng tôi đang thêm thời gian; đây có thể là một biểu thức trả về giá trị thời gian / ngày giờ / dấu thời gian hoặc tên của cột thời gian / ngày giờ / dấu thời gian. Trong ví dụ của chúng tôi, chúng tôi sử dụng arrival_datetime
, thuộc về ngày giờ loại dữ liệu.
Đối số thứ hai là một chuỗi chứa lượng thời gian cần thêm vào đối số đầu tiên (trong ví dụ của chúng tôi là ‘2:10’ hoặc 2 giờ 10 phút).
Bạn cũng có thể thêm giây phân số và thậm chí cả ngày vào giá trị ngày giờ / thời gian. Truy vấn bên dưới thêm 3 ngày, 1 giờ, 1 phút, 1 giây và 111 giây phân số vào một ngày và giờ:
SELECT ADDTIME('2019-02-05 10:12:11', '3 1:1:1.111');
Nó trả về:
2019-02-08 11:13:12.111000
ADDTIME () trả về một chuỗi với thời gian mới. Trong ví dụ của chúng tôi, thời gian đến mới của chuyến bay ‘EK10’ là '2019-04-20 17:25:00' - hai giờ mười phút sau ngày giờ ban đầu của nó là
‘2019-04-20 15:15:00’.