2012-01-31 120 views
8

是否可以在SELECT *查詢中格式化日期字段?我想從我的表中獲取所有列,但需要與日期不同的格式。在SELECT *查詢中格式化日期

喜歡的東西:

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

或者我有查詢後處理它在PHP?

+0

你試過嗎? – 2012-01-31 21:43:10

+1

谷歌是你的朋友:http://www.w3schools.com/sql/func_date_format.asp – cubetwo1729 2012-01-31 21:44:44

+0

@ cubetwo1729:w3schools有一些正確的東西,但也有許多完全錯誤的。例子是[CHECK約束](http://www.w3schools.com/sql/sql_check.asp),它在MySQL中根本不起作用... – 2012-01-31 21:53:41

回答

17

使用DATE_FORMAT

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

Y2K警察在這裏。如果可能的話,「%m-%d-%Y」(%Y - > 4位數年份,%y - > 2位數字年份) – 2012-01-31 21:49:35

+0

我接近我的代碼!有沒有辦法做到這一點,而不在結果中創建一個新的字段? – PGrau 2012-01-31 22:08:32

+2

@PGrau你的意思是你不想返回日期字段以及格式化的日期字段?然後,從您的SELECT中刪除原始日期字段。 'SELECT DATE_FORMAT(date,「%m-%d-%y」)AS'date',col1,col2,col3 FROM ...' – 2012-01-31 22:11:32

0

如果你正在編寫包含不同的時區的應用和格式更好的做法會使用存儲在int(8)字段中的UNIX時間戳,否則可以在查詢中格式化日期字段。

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

的結果是這樣的

11年9月22日

與此相反

2011-02-02 15點42分51秒

0

你可以在date_format後面加上列名。像這樣:

$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"); 

,或者你可以把「爲」 是的,你必須選擇一個接一個。是工作 !!!!