在SELECT *查询中格式化日期

问题描述:

是否可以在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

使用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

我不知道什么是FORMATDATE,但您可以使用DATE-FORMAT

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format

如果你正在编写包含不同的时区的应用和格式更好的做法会使用存储在int(8)字段中的UNIX时间戳,否则可以在查询中格式化日期字段。

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秒

你可以在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"); 

,或者你可以把“为” 是的,你必须选择一个接一个。是工作 !!!!