Chuyển đổi dấu thời gian Unix thành ngày có thể đọc được của con người bằng MySQL


222

Có chức năng MySQL nào có thể được sử dụng để chuyển đổi dấu thời gian Unix thành ngày có thể đọc được không? Tôi có một lĩnh vực nơi tôi lưu thời gian Unix và bây giờ tôi muốn thêm một lĩnh vực khác cho ngày có thể đọc được của con người.


1
Các chức năng ngày và thời gian trong hướng dẫn sử dụng myQuery
Pekka

Câu trả lời:



108

Điều còn thiếu từ các câu trả lời khác (khi viết bài này) và không rõ ràng trực tiếp là from_unixtimecó thể lấy tham số thứ hai để chỉ định định dạng như vậy:

SELECT
  from_unixtime(timestamp, '%Y %D %M %H:%i:%s')
FROM 
  your_table

20
Vấn đề rất nhỏ, nhưng% h là giờ ở định dạng 12 giờ, sau đó yêu cầu% p để hoàn thành (AM / PM). Hoặc% H cho giờ ở định dạng 24 giờ.
tlum


19

Cần dấu thời gian unix trong múi giờ cụ thể?

Đây là một lớp lót nếu bạn có quyền truy cập nhanh vào clif mysql:

mysql> select convert_tz(from_unixtime(1467095851), 'UTC', 'MST') as 'local time';

+---------------------+
| local time          |
+---------------------+
| 2016-06-27 23:37:31 |
+---------------------+

Thay thế 'MST'bằng múi giờ mong muốn của bạn. Tôi sống ở Arizona, do đó, việc chuyển đổi từ UTC sang MST.


7

Tại sao phải lưu các lĩnh vực như có thể đọc được? Chỉ chúng tôiAS

SELECT theTimeStamp, FROM_UNIXTIME(theTimeStamp) AS readableDate
               FROM theTable
               WHERE theTable.theField = theValue;

EDIT: Xin lỗi, chúng tôi lưu trữ mọi thứ trong một phần nghìn giây chứ không phải giây. Đã sửa nó.


4

Bạn có thể sử dụng hàm DATE_FORMAT. Đây là một trang có các ví dụ và các mẫu bạn có thể sử dụng để chọn các thành phần ngày khác nhau.


1

Cách dễ dàng và đơn giản:

select from_unixtime(column_name, '%Y-%m-%d') from table_name


1

Vì tôi thấy câu hỏi này không được biết, nên mysql luôn lưu trữ thời gian trong các trường dấu thời gian trong UTC nhưng sẽ hiển thị (ví dụ: phpmyadmin) theo múi giờ địa phương, tôi muốn thêm các phát hiện của mình.

Tôi có một trường được cập nhật tự động last_modified, được định nghĩa là:

`last_modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

Nhìn vào nó với phpmyadmin, có vẻ như đó là giờ địa phương, bên trong nó là UTC

SET time_zone = '+04:00'; // or '+00:00' to display dates in UTC or 'UTC' if time zones are installed.
SELECT last_modified, UNIX_TIMESTAMP(last_modified), from_unixtime(UNIX_TIMESTAMP(last_modified), '%Y-%c-%d %H:%i:%s'), CONVERT_TZ(last_modified,@@session.time_zone,'+00:00') as UTC FROM `table_name`

Trong bất kỳ chòm sao nào, UNIX_TIMESTAMP và 'dưới dạng UTC' luôn được hiển thị theo thời gian UTC.

Chạy cái này hai lần, lần đầu tiên mà không đặt time_zone.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.