2012-01-31 42 views
8

Có thể định dạng trường ngày trong truy vấn SELECT * không? Tôi muốn nhận tất cả các cột từ bảng của tôi nhưng cần một định dạng khác từ ngày đó.Ngày định dạng trong SELECT * truy vấn

Cái gì như:

SELECT *, FORMATDATE(date,'%m-%d-%y') AS date FROM my_table; 

hoặc tôi phải xử lý nó trong php sau khi truy vấn?

+0

Bạn đã thử điều này chưa? –

+1

Google là bạn của bạn: http://www.w3schools.com/sql/func_date_format.asp – cubetwo1729

+0

@ cubetwo1729: w3schools có một số nội dung chính xác nhưng cũng có nhiều lỗi hoàn toàn. Ví dụ là [ràng buộc CHECK] (http://www.w3schools.com/sql/sql_check.asp) mà không làm việc ở tất cả trong MySQL ... –

Trả lời

17

Sử dụng DATE_FORMAT:

SELECT *, DATE_FORMAT(date, "%m-%d-%y") AS date FROM my_table; 
+2

Cảnh sát Y2K ở đây. "% m-% d-% Y" (% Y -> 4 chữ số năm,% y -> 2 chữ số năm) rất có thể sẽ được ưu tiên nếu có thể. –

+0

Tôi đã gần với mã của tôi! Có cách nào để làm điều đó mà không tạo ra một lĩnh vực mới trong kết quả? – PGrau

+2

@PGạn có nghĩa là bạn không muốn trả lại trường ngày tháng cũng như trường ngày được định dạng? Sau đó, chỉ cần xóa trường ngày ban đầu khỏi SELECT của bạn. 'SELECT DATE_FORMAT (ngày,"% m-% d-% y ") AS 'date', col1, col2, col3 FROM ...' –

0

Nếu bạn đang viết ứng dụng có chứa các múi giờ khác nhau và định dạng thực hành tốt hơn sẽ đang sử dụng dấu thời gian UNIX được lưu trữ trong trường int (8), nếu không bạn có thể định dạng các trường ngày trong truy vấn.

1
select DATE_FORMAT(your_date_field_name,'%m-%d-%y') AS whatever FROM your_table_name_here; 

kết quả là một cái gì đó như thế này

09-22-11

như trái ngược với này

2011-02-02 15:42:51

0

bạn có thể đặt tên cột ở mặt sau date_format. như thế này:

$rs = mysql_query("select blablabla,DATE_FORMAT(name_column, '%d-%b-%y | %H:%i')name_column,DATE_FORMAT(name_column2, '%d-%b-%y | %H:%i')as name_column2 from db ORDER BY id DESC limit $offset,$rows"); 

hoặc bạn có thể đặt "là" có, bạn phải chọn từng cái một. đó là công việc !!!!

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