2008-10-06 82 views
5

Tôi muốn hiển thị trường THỜI GIAN từ bảng mysql trên trang web của tôi, nhưng thay vì hiển thị 21:00:00 vv, tôi muốn hiển thị 8:00 PM. Tôi cần một chức năng/mã để làm điều này hoặc thậm chí bất kỳ con trỏ đi đúng hướng. Sẽ đánh dấu câu trả lời đầu tiên bằng một số mã là câu trả lời chính xác.Chuyển đổi thời gian mysql từ 24 HR sang AM/PM định dạng

Trả lời

0

Sử dụng DATE_FORMAT()

DATE_FORMAT (<Fieled>, '% h:% i:% s% p')

hoặc

DATE_FORMAT (<Fieled>, '% r')

2

Bạn cũng có thể chọn cột như au nix timestamp sử dụng hàm MYSQL's UNIX_TIMESTAMP(). Sau đó định dạng nó trong PHP. IMO này là linh hoạt hơn ...

select a, b, c, UNIX_TIMESTAMP(instime) as unixtime; 

Các trong PHP sử dụng các chức năng date() & định dạng nó bất kỳ cách nào bạn muốn.

<?php echo date('Y/m/d', $row->unixtime); ?> 

Lý do tôi thích phương pháp này như trái ngược với định dạng nó trong SQL là b/c, đối với tôi, định dạng của ngày là một quyết định hiển thị & (theo ý kiến ​​của tôi) định dạng ngày tháng trong SQL cảm thấy sai .. tại sao đặt logic hiển thị trong SQL của bạn?

Hiện tại - nếu bạn không xử lý dữ liệu trong PHP và đang thực hiện truy vấn adhoc thì DATE_FORMAT() là cách để thực hiện. Nhưng nếu bạn sẽ có dữ liệu hiển thị trên web, tôi sẽ đi với UNIX_TIMESTAMP() và thực hiện định dạng bằng PHP ...

Ý tôi là ... cho phép bạn muốn thay đổi cách ngày & thời gian là hiển thị trên trang ... nó sẽ không cảm thấy "tắt" để phải sửa đổi SQL của bạn cho một tinh chỉnh hiển thị?

2 xu của tôi

+0

Tôi có một lớp học chứa tất cả mã xử lý ngày của tôi. Trong mã đăng nhập, tôi chỉ gọi một hàm từ lớp đó định dạng thời gian bằng cách sử dụng DATE_FORMAT(). Vì vậy, nó không thực sự hiển thị trong mã hiển thị và không cảm thấy tắt Ngày Mysql chỉ dễ đọc hơn so với dấu thời gian unix. – Ali

+0

+1 để nói "định dạng của ngày là quyết định hiển thị" thực sự là vậy, tôi đồng ý với bạn 200% về điều này –

0

Tôi đã cố gắng làm như vậy và nhận trang này được trả lại từ tìm kiếm của Google. Tôi đã làm việc một giải pháp cho thời gian 21:00:00;

  • sử dụng DATE_FORMAT(<field>,'%l.%i%p') mà trở 21:00

  • đặt một hàm LOWER() xung quanh nó trở lại 21:00

Vì vậy, mã đầy đủ là; DATE_FORMAT(<field>,'%l.%i%p')

Làm việc bật đèn xanh cho tôi ...

7

Các dữ liệu thời gian ngày & trong AM dạng/PM với ví dụ sau đây ...

SELECT DATE_FORMAT(`t`.`date_field`,'%h:%i %p') AS `date_field` FROM `table_name` AS `t` 

HOẶC

SELECT DATE_FORMAT(`t`.`date_field`,'%r') AS `date_field` FROM `table_name` AS `t` 

Cả hai đều hoạt động bình thường.

Các vấn đề liên quan