Tôi đang cố gắng lưu trữ thời gian đồng hồ 12/24 giờ (ví dụ: 00:00) trong cơ sở dữ liệu MySQL. Hiện tại tôi đang sử dụng kiểu dữ liệu thời gian. Điều này hoạt động ok nhưng nó nhấn mạnh vào việc thêm giây vào cột. Vì vậy, bạn nhập 09:20 và nó được lưu trữ như 09:20:00. Có cách nào tôi có thể hạn chế nó trong MySQL chỉ 00:00?Sử dụng kiểu dữ liệu thời gian trong MySQL mà không cần giây
Trả lời
Điều đó không thể thực hiện được. Loại dữ liệu TIME
được định nghĩa để biểu thị thời gian trong ngày (hoặc thời gian trôi qua) với độ phân giải 1 giây. Tuy nhiên, bạn luôn có thể sử dụng chức năng DATE_FORMAT()
để định dạng lĩnh vực của bạn như HH:MM
trong một truy vấn SELECT
:
SELECT DATE_FORMAT(NOW(), '%k:%i');
+-----------------------------+
| DATE_FORMAT(NOW(), '%k:%i') |
+-----------------------------+
| 4:09 |
+-----------------------------+
1 row in set (0.00 sec)
SELECT DATE_FORMAT(NOW(), '%H:%i');
+-----------------------------+
| DATE_FORMAT(NOW(), '%H:%i') |
+-----------------------------+
| 04:09 |
+-----------------------------+
1 row in set (0.00 sec)
Các TIME
column type không chấp nhận bất kỳ thông số hoặc sửa đổi để xác định phạm vi hoặc chính xác. Tuy nhiên, bạn có thể bỏ qua giây khi chèn nếu bạn cẩn thận:
Hãy cẩn thận khi gán giá trị viết tắt cho cột TIME. MySQL diễn giải các giá trị TIME được viết tắt bằng dấu hai chấm là thời gian trong ngày. Tức là, '11: 12 'có nghĩa là '11: 12: 00', không phải '00: 11: 12 '. MySQL giải thích giá trị viết tắt không có dấu hai chấm bằng cách sử dụng giả định rằng hai chữ số ngoài cùng bên phải đại diện cho giây (nghĩa là, thời gian trôi qua thay vì so với thời gian trong ngày). Ví dụ: bạn có thể nghĩ đến '1112' và 1112 như ý nghĩa '11: 12: 00 '(12 phút sau 11 giờ), nhưng MySQL diễn giải chúng là '00: 11: 12' (11 phút, 12 giây). Tương tự, '12' và 12 được hiểu là '00: 00: 12 '.
CREATE TABLE example (
example_id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
elapsed TIME NOT NULL,
PRIMARY KEY (example_id)
);
INSERT INTO example (elapsed) VALUES ('123:45:00'), ('123:45');
SELECT * FROM example;
+------------+-----------+
| example_id | elapsed |
+------------+-----------+
| 1 | 123:45:00 |
| 2 | 123:45:00 |
+------------+-----------+
... và bạn có thể loại bỏ chúng vào đọc (nếu cần thiết) bằng cách áp dụng một hợp TIME_FORMAT(), lưu ý rằng:
Nếu giá trị thời gian chứa một phần giờ đó lớn hơn 23, các thông số định dạng % H và% k giờ tạo ra một giá trị lớn hơn phạm vi thông thường là 0,23. Định dạng giờ specifiers khác sản xuất các giờ giá trị modulo 12.
INSERT INTO example (elapsed) VALUES ('2:00');
SELECT example_id, TIME_FORMAT(elapsed, '%k:%i') AS elapsed
FROM example;
+------------+---------+
| example_id | elapsed |
+------------+---------+
| 1 | 123:45 |
| 2 | 123:45 |
| 3 | 2:00 |
+------------+---------+
Kể từ MySQL/5.7.5 bạn cũng có thể sử dụng một generated column để có được một giá trị hiển thị tự động:
-- Completely untested, I don't have 5.7 yet
CREATE TABLE example (
example_id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
elapsed TIME NOT NULL,
-- Size to accomodate for '-838:59:59'
elapsed_display VARCHAR(10) AS (TIME_FORMAT(elapsed, '%k:%i')) VIRTUAL NOT NULL,
PRIMARY KEY (example_id)
);
- 1. Dữ liệu chuỗi thời gian trong MySQL: Lấy mẫu
- 2. Trích tổng số giây từ một kiểu dữ liệu khoảng thời gian
- 3. Sử dụng String.Format trên một TimeSpan để xuất đầy đủ giây mà không cần mili giây
- 4. Nhận thời gian tính bằng mili giây mà không cần cài đặt thêm gói?
- 5. Mysql cách đặt kiểu dữ liệu thời gian là chỉ HH: MM trong cơ sở dữ liệu
- 6. NHibernate và SQL 2008 Kiểu dữ liệu thời gian
- 7. Kiểu dữ liệu C# so với kiểu dữ liệu MySql
- 8. Sử dụng thời gian chờ của tệp hàng loạt mà không cần lệnh lặp lại?
- 9. Kiểu dữ liệu mảng DC2Type trong mysql
- 10. Chuyển đổi thời gian sử dụng NSD thành mili giây
- 11. Chuyển đổi thời gian sử dụng trong mysql
- 12. Sử dụng dữ liệu nhật ký thời gian với TraMineR
- 13. Cách hiển thị định dạng thời gian nhạy cảm miền địa phương mà không cần giây trong python
- 14. Cần xóa khóa MySQL InnoDB mà không cần khởi động lại cơ sở dữ liệu
- 15. Cần tạo cơ sở dữ liệu mới mà không cần sử dụng studio quản lý
- 16. tháo giây từ khoảng thời gian sử dụng C#
- 17. Làm thế nào để sửa chữa một bảng MySQL mà không cần sử dụng phpMyAdmin?
- 18. Có cơ sở dữ liệu Haskell sử dụng các kiểu dữ liệu đại số không?
- 19. biến tuyên bố mà không cần bất kỳ kiểu dữ liệu trong c
- 20. MySQL kiểu dữ liệu cơ sở dữ liệu
- 21. Hãy so sánh ngày mà không cần thời gian
- 22. Thông báo thay đổi dữ liệu trong con trỏ mà không cần sử dụng ContentProvider
- 23. C# thời gian tính bằng micro giây
- 24. Phương pháp tìm lỗ hổng trong dữ liệu chuỗi thời gian trong MySQL?
- 25. Giám sát MySQL theo thời gian thực
- 26. Gửi dữ liệu POST tới PHP mà không cần sử dụng biểu mẫu HTML?
- 27. Chụp một thời gian trong mili giây
- 28. Doctrine2 workaround cho ánh xạ MySql 'bit' kiểu dữ liệu
- 29. Trong thời gian Joda làm thế nào để chuyển đổi múi giờ mà không cần thời gian
- 30. Xây dựng tập dữ liệu khoảng thời gian cố định từ tập dữ liệu khoảng thời gian ngẫu nhiên sử dụng dữ liệu cũ