Làm cách nào để có được thời gian kỷ nguyên trong MySQL?

Nếu bạn giống tôi, có lẽ bạn đã tự hỏi liệu có cách nào để chuyển đổi Dấu thời gian Epoch mà không cần phải vò đầu bứt tóc hay không. Trong bài viết này, chúng ta sẽ xem xét việc chuyển đổi dấu thời gian Epoch mà không gây đau đầu cho các nhà phát triển của bạn

Gần đây tôi đang gỡ lỗi một công việc định kỳ trên trang web Drupal mà Envano duy trì. Vì các công việc định kỳ chạy trong nền vào những thời điểm nhất định trong ngày, nên rất khó để biết vấn đề gì đã khiến nó bị hỏng. May mắn thay, Drupal cung cấp hệ thống ghi nhật ký nội bộ của riêng mình, lưu trữ nhật ký trong bảng cơ sở dữ liệu có tên là 'cơ quan giám sát'

Dưới đây là một ví dụ về cách ghi thông tin vào bảng giám sát của Drupal

\Drupal::logger['product_import']->notice["Product Import Ran"];

Điều này rất hữu ích, nhưng có một vấn đề là khi chạy các truy vấn MySQL trên bảng này, ngày và giờ được trả về dưới dạng dấu thời gian kỷ nguyên UNIX, tôi. e. 1639087126.  

Đối với nền tảng, “[Kỷ nguyên UNIX] là một hệ thống để mô tả một thời điểm. Đó là số giây đã trôi qua kể từ kỷ nguyên Unix, không bao gồm giây nhuận. Kỷ nguyên Unix là 00. 00. 00 UTC ngày 1 tháng 1 năm 1970 [một ngày tùy ý]. ” [Wikipedia]

Ví dụ của tôi ở trên về 1639087126 là ngày và giờ tính bằng giây kể từ ngày 1 tháng 1 năm 1970, tức là ngày 9 tháng 12 năm 2021 lúc 9 giờ. 58. 46 CH. Có những trang web như epochconverter. com nơi có thể nhập thời gian kỷ nguyên và nó sẽ trả về ngày được định dạng theo cách con người có thể đọc được. Tuy nhiên, quá trình này rất tẻ nhạt, đặc biệt nếu có một số lượng lớn ngày cần chuyển đổi

Hàm FROM_UNIXTIME[] của MySQL

Sau khi thực hiện một số nghiên cứu, tôi thấy rằng MySQL có một chức năng có thể được thêm vào truy vấn SQL để tự động chuyển đổi dấu thời gian kỷ nguyên UNIX một cách nhanh chóng khi chạy truy vấn. Hàm này có thể được sử dụng bằng cách chuyển vào tên cột được lưu dưới dạng dấu thời gian và định dạng ngày như bên dưới

SELECT *, FROM_UNIXTIME[timestamp, '%h:%i:%s - %m/%d/%y'] as nice_date FROM watchdog order by timestamp desc;

Các định dạng ngày khác có thể được tìm thấy trong

Đặt múi giờ của một ngày trong MySQL

Một vấn đề khác mà tôi gặp phải là ngày trả về không sử dụng múi giờ ưa thích của tôi. May mắn thay, MySQL cung cấp một cách để tạm thời đặt múi giờ khi chạy truy vấn bằng cách sử dụng như sau

Ngày và giờ có thể được lưu trữ dưới dạng giá trị số nguyên dưới dạng dấu thời gian UNIX. Đây không phải là định dạng đặc biệt mà con người có thể đọc được nhưng có thể được chuyển đổi trong MySQL thành giá trị ngày giờ bằng cách sử dụng hàm FROM_UNIXTIME

Ngày và giờ dưới dạng dấu thời gian

Quay lại lần đầu tiên khi tôi bắt đầu sử dụng MySQL và PHP và tạo một hệ thống thương mại điện tử được sử dụng trên một số trang web, tôi đã quyết định lưu trữ thời gian biểu dưới dạng dấu thời gian UNIX vì bất kỳ lý do gì. Điều này giúp dễ dàng sử dụng hàm ngày PHP để định dạng ngày nhưng không hữu ích khi duyệt dữ liệu trong cơ sở dữ liệu hoặc chọn phạm vi ngày trong truy vấn. Tôi không còn làm điều này nữa và luôn lưu trữ ngày giờ dưới dạng loại trường ngày giờ

Chuyển đổi dấu thời gian số nguyên thành ngày giờ

Trong hệ thống thương mại điện tử cũ của tôi, có một bảng gọi là "đơn đặt hàng" với một cột có tên "date_ordered" là dấu thời gian UNIX được lưu dưới dạng số nguyên. Để chuyển đổi điều này thành một ngày giờ như một phần của truy vấn CHỌN, điều này cần được thực hiện

SELECT other fields here, FROM_UNIXTIME[date_ordered]
FROM orders
WHERE ...

Trường số nguyên bây giờ sẽ được biểu thị trong tập kết quả dưới dạng chuỗi ngày giờ ở định dạng YYYY-MM-DD HH. MM. SS

Hàm UNIX_TIMESTAMP[] trong MySQL

Cải thiện bài viết

Lưu bài viết

Thích bài viết

  • Cập nhật lần cuối. 22 tháng 12 năm 2020

  • Đọc
  • Bàn luận
  • khóa học
  • Luyện tập
  • Băng hình
  • Cải thiện bài viết

    Lưu bài viết

    UNIX_TIMESTAMP[]
    Chức năng này trong MySQL giúp trả về dấu thời gian Unix. Chúng ta có thể định nghĩa dấu thời gian Unix là số giây đã trôi qua kể từ '1970-01-01 00. 00. 00'UTC. Ngay cả khi bạn vượt qua ngày/giờ hiện tại hoặc một ngày/giờ được chỉ định khác, hàm sẽ trả về dấu thời gian Unix dựa trên đó

    cú pháp

    UNIX_TIMESTAMP[]
    UNIX_TIMESTAMP[date]

    Thông số
    Nó sẽ chỉ chấp nhận một đối số

    • ngày -
      Giá trị ngày có thể là NGÀY, DATETIME, DẤU THỜI GIAN hoặc một số ở định dạng 'YYYYMMDD' hoặc 'YYMMDD'

    Trở lại

    • Nếu không có tham số nào được truyền, hàm sẽ trả về dấu thời gian Unix sau vài giây kể từ '1970-01-01 00. 00. 00’ UTC ở dạng số nguyên không dấu
    • Nhưng nếu tham số ngày được truyền vào, hàm sẽ trả về giá trị của tham số ở dạng số nguyên không dấu tính bằng giây kể từ '1970-01-01 00. 00. 00’ UTC

    Ví dụ 1
    Hoạt động của UNIX_TIMESTAMP[] sử dụng Ngày/giờ hiện tại

    SELECT UNIX_TIMESTAMP[] 
    As TimeStamp; 

    đầu ra

    Dấu thời gian1606925233

    Ví dụ-2
    Hoạt động của UNIX_TIMESTAMP[] sử dụng giá trị ngày '1999-01-22'

    SELECT UNIX_TIMESTAMP['1999-01-22'] 
    As TimeStamp; 

    đầu ra

    Dấu thời gian916988400

    Ví dụ-3
    Hoạt động của UNIX_TIMESTAMP[] sử dụng giá trị DateTime ‘2020-10-17 02. 35. 43’

    SELECT UNIX_TIMESTAMP['2020-10-17 02:35:43'] 
    As TimeStamp; 

    đầu ra

    Dấu thời gian1602923743

    Ví dụ-4
    Hoạt động của UNIX_TIMESTAMP[] sử dụng giá trị DateTime cùng với giây phân số ‘2020-10-17 02. 35. 43. 12345’

    SELECT UNIX_TIMESTAMP['2020-10-17 02:35:43.12345'] 
    As TimeStamp; 

    đầu ra

    Dấu thời gian1602923743. 12345

    Ghi chú cá nhân của tôi arrow_drop_up

    Tiết kiệm

    Vui lòng Đăng nhập để nhận xét.

    Làm cách nào để có được thời gian kỷ nguyên hiện tại trong MySQL?

    Sử dụng hàm UNIX_TIMESTAMP[] để chuyển đổi ngày/giờ MySQL [chẳng hạn như bây giờ[] = thời gian hiện tại] thành kỷ nguyên .

    Làm cách nào để có được thời gian Unix trong MySQL?

    UNIX_TIMESTAMP[] . Chức năng này trong MySQL giúp trả về dấu thời gian Unix. Chúng ta có thể định nghĩa dấu thời gian Unix là số giây đã trôi qua kể từ '1970-01-01 00. 00. 00'UTC. Ngay cả khi bạn vượt qua ngày/giờ hiện tại hoặc một ngày/giờ được chỉ định khác, hàm sẽ trả về dấu thời gian Unix dựa trên đó.

    Làm cách nào để trích xuất ngày từ dấu thời gian trong MySQL?

    Trong MySQL, sử dụng hàm DATE[] để truy xuất ngày từ giá trị ngày giờ hoặc dấu thời gian. Hàm này chỉ nhận một đối số – có thể là biểu thức trả về giá trị ngày/ngày giờ/dấu thời gian hoặc tên của cột dấu thời gian/ngày giờ.

    MySQL có dấu thời gian không?

    MySQL truy xuất và hiển thị các giá trị DATETIME trong ' YYYY-MM-DD hh. mm. định dạng ss. Phạm vi được hỗ trợ là '1000-01-01 00. 00. 00' đến '9999-12-31 23. 59. 59'. Loại dữ liệu DẤU THỜI GIAN được sử dụng cho các giá trị chứa cả phần ngày và giờ . DẤU THỜI GIAN có phạm vi '1970-01-01 00. 00. 01' UTC đến '2038-01-19 03. 14. 07' UTC.

    Chủ Đề