Có cách nào trong mysql để tính toán độ lệch cho bất kỳ múi giờ nào không. Ví dụ để có được thời gian địa phương trong múi giờ 'Châu Á/calcutta', những gì tôi muốn làm là tính toán bù đắp cho múi giờ này và thêm bù đắp cho GMT để có được thời gian địa phương.Trong tính toán bù trừ MySQL cho một múi giờ
Trả lời
Nếu bạn muốn tính toán bù đắp của một múi giờ như Châu Mỹ/Vancouver từ UTC, bạn có thể làm điều đó như sau:
SELECT (unix_timestamp() - unix_timestamp(convert_tz(now(), 'Etc/UTC', 'America/Vancouver')))/3600 as offset;
Để làm việc này trước tiên bạn cần tải thông tin múi giờ vào mysql như được nêu tại đây: http://dev.mysql.com/doc/refman/5.0/en/mysql-tzinfo-to-sql.html
DATEDIFF(NOW(), UTC_TIMESTAMP())
Khoản chênh lệch sẽ tùy thuộc vào thời gian bạn quan tâm - ví dụ: tôi hiện có chênh lệch một giờ từ UTC, nhưng vào mùa đông, chênh lệch của tôi sẽ bằng 0.
Đánh giá theo số docs page on MySQL time zone support, bạn muốn sử dụng chức năng convert_tz
. Nếu bạn đang cố gắng chuyển đổi UTC thành giờ địa phương, hãy chuyển "Etc/GMT + 0" làm múi giờ "từ" và "Châu Á/Calcutta" làm "thành".
SET time_zone = '-07:00';
Bạn chỉ có thể vượt qua trong một bù đắp
http://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html
Điều này không hoạt động cũng như suy nghĩ .... –
Không bao giờ sử dụng bù đắp để đặt múi giờ! Luôn sử dụng tên, như "Châu Âu/Prague". Nếu không, bạn sẽ rất ngạc nhiên khi DST xảy ra. –
SELECT TIMESTAMPDIFF(HOUR, UTC_TIMESTAMP(), NOW());
Nếu múi giờ của máy chủ là PST này sẽ trở lại -8
.
SELECT TIMESTAMPDIFF(SECOND, NOW(), UTC_TIMESTAMP());
Thêm kết quả trên cho bất kỳ dấu thời gian unix nếu bạn muốn so sánh nó với DateTimes MySQL.
tôi lẫn lộn câu trả lời @ColinM và @Kenneth Spencer vì tôi muốn bù đắp của một múi giờ tùy ý trong giờ:
TIMESTAMPDIFF(HOUR, UTC_TIMESTAMP(), CONVERT_TZ(UTC_TIMESTAMP(), "UTC", "America/Denver"))
-
SELECT ROUND(TIMESTAMPDIFF(MINUTE, UTC_TIMESTAMP(), CONVERT_TZ(UTC_TIMESTAMP(), "Etc/UTC", "Asia/Kolkata"))/60,1)
Như Kenneth chỉ ra bạn sẽ cần phải tải thông tin múi giờ: http://dev.mysql.com/doc/refman/5.0/en/mysql-tzinfo-to-sql.html
Nhưng sau đó bạn có thể làm những điều thú vị như tìm bù đắp cho nhiều múi giờ cùng một lúc:
SELECT Name,
TIMESTAMPDIFF(HOUR, UTC_TIMESTAMP(), CONVERT_TZ(UTC_TIMESTAMP(), "Etc/UTC", Name)) as Offset
FROM mysql.time_zone_name
WHERE (Name IN ('America/Vancouver', 'Etc/UTC', 'America/Denver'))
Giving:
+-------------------+--------+
| Name | Offset |
+-------------------+--------+
| America/Denver | -6 |
| America/Vancouver | -7 |
| Etc/UTC | 0 |
+-------------------+--------+
Tôi tự hỏi, nếu câu trả lời @ ColinM của trên là an toàn. Nó có đọc đồng hồ một hoặc hai lần không? Có khả năng UTC_TIMESTAMP() và NOW() có thể cách nhau một giây không? Tôi không biết nhưng điều này sẽ tránh được điều đó.
SET @now = now();
SET @utc = CONVERT_TZ(@now, 'SYSTEM', '+00:00');
SELECT TIMESTAMPDIFF(MINUTE, @utc, @now);
đây là một nửa câu trả lời nửa câu hỏi – Drew
SELECT TIME_FORMAT(TIMEDIFF(NOW(), CONVERT_TZ(NOW(), 'Asia/Calcutta', 'UTC')), '%H:%i') AS offset;
Giving
+--------+
| offset |
+--------+
| 05:30 |
+--------+
Thông thường, bạn nên tìm hiểu mã trong câu trả lời của mình. Nói về cách nó hoạt động hoặc chính xác những gì bạn đang làm. Điều này giúp các nhà phát triển mới hiểu chính xác những gì đang diễn ra. –
- 1. Kiểu dữ liệu/cấu trúc để lưu trữ bù trừ múi giờ trong MySQL
- 2. Tính toán múi giờ Joda
- 3. Bù giờ múi giờ địa phương trong PostgreSQL
- 4. Nhận chênh lệch múi giờ giữa hai múi giờ trong một thời hạn nhất định
- 5. Xác định bù đắp múi giờ trong T-SQL
- 6. Bù trừ UTC trong PHP
- 7. Lấy đúng múi giờ bù đắp bằng Python sử dụng múi giờ địa phương
- 8. Làm cách nào để phân tích cú pháp múi giờ với bù trừ UTC bằng Python?
- 9. ngày javascript - giữ lại khoảng thời gian bù trừ múi giờ
- 10. iPhone: Tìm bù đắp múi giờ hiện tại trong HOURS
- 11. C# DateTime vấn đề trừ múi giờ
- 12. Ngày giờ Mysql với múi giờ
- 13. Kế toán múi giờ với jQuery datepicker
- 14. phiên thanh toán bù trừ trong MongoDB, expressjs, nodejs
- 15. Nhận múi giờ của khách hàng (không phải số tiền bù giờ GMT) trong JS
- 16. Tính toán Bọ Rác và Bù Đắp
- 17. Làm cách nào để tính toán độ lệch, tính theo giờ, của một múi giờ nhất định từ UTC trong ruby?
- 18. Múi giờ cho Firebase.ServerValue.TIMESTAMP
- 19. Xử lý múi giờ trong bộ nhớ?
- 20. Cách đặt chính xác múi giờ mysql
- 21. đối tượng thanh toán bù trừ từ localStorage
- 22. Làm thế nào để lấy bù đắp múi giờ từ GMT + 0 trong php?
- 23. Cant thiết mysql múi giờ để madrid
- 24. oracle odp.net Chuyển đổi SafeMapping nếu dấu thời gian với múi giờ - cách lấy bù trừ thay vì tên vùng
- 25. iOS - Làm thế nào để nhận được bù đắp thô cho múi giờ?
- 26. Hướng dẫn lắp ráp, thanh toán bù trừ cờ & TF
- 27. Mysql chuyển đổi TIMESTAMP thành INTEGER - múi giờ
- 28. django 1.4 - không thể so sánh các khoảng thời gian bù trừ-ngây thơ và bù trừ nhận thức
- 29. cộng hoặc trừ chênh lệch múi giờ thành javascript Ngày
- 30. MySQL: giữ múi giờ của máy chủ hoặc múi giờ của người dùng?
DATEDIFF trả về sự khác biệt trong ngày * * không giờ hoặc phút .. – ColinM