在MySQL查询中将时间戳转换为date

我想将MySQL中的timestamp转换为date。

我想将user.registration字段格式化为yyyy-mm-dd文本文件。

这是我的SQL:

 $sql = requestSQL("SELECT user.email, info.name, FROM_UNIXTIME(user.registration), info.news FROM user, info WHERE user.id = info.id ", "export members"); 

我也尝试过的date转换:

 DATE_FORMAT(user.registration, '%d/%m/%Y') DATE(user.registration) 

我回应之前的结果编写文本文件,我得到:

email1; name1; DATE_FORMAT(user.registration,'%d /%m /%Y'); news1

EMAIL2; NAME2;新闻2

如何将该字段转换为date?

 DATE_FORMAT(FROM_UNIXTIME(`user.registration`), '%e %b %Y') AS 'date_formatted' 

在MYSQL中将时间戳转换为date

使用整数时间戳创build表:

 mysql> create table foo(id INT, mytimestamp INT(11)); Query OK, 0 rows affected (0.02 sec) 

插入一些值

 mysql> insert into foo values(1, 1381262848); Query OK, 1 row affected (0.01 sec) 

看一看

 mysql> select * from foo; +------+-------------+ | id | mytimestamp | +------+-------------+ | 1 | 1381262848 | +------+-------------+ 1 row in set (0.00 sec) 

将数字转换为时间戳:

 mysql> select id, from_unixtime(mytimestamp) from foo; +------+----------------------------+ | id | from_unixtime(mytimestamp) | +------+----------------------------+ | 1 | 2013-10-08 16:07:28 | +------+----------------------------+ 1 row in set (0.00 sec) 

将其转换为可读的格式:

 mysql> select id, from_unixtime(mytimestamp, '%Y %D %M %h:%i:%s') from foo; +------+-------------------------------------------------+ | id | from_unixtime(mytimestamp, '%Y %D %M %h:%i:%s') | +------+-------------------------------------------------+ | 1 | 2013 8th October 04:07:28 | +------+-------------------------------------------------+ 1 row in set (0.00 sec) 

为了得到一个date,你可以cast

 cast(user.registration as date) 

并获得一个特定的格式使用date_format

 date_format(registration, '%Y-%m-%d') 

SQLFiddle演示

如果registration字段确实是typesTIMESTAMP你应该能够做到:

 $sql = "SELECT user.email, info.name, DATE(user.registration), info.news FROM user, info WHERE user.id = info.id "; 

注册应该显示为yyyy-mm-dd

只需使用mysql的DATE函数:

 mysql> select DATE(mytimestamp) from foo; 

如果您在输出中获得查询,则需要向我们显示实际回显结果的代码。 你可以发布调用requeteSQL的代码吗?

例如,如果您在php中使用了单引号,它将打印variables名称,而不是值

 echo 'foo is $foo'; // foo is $foo 

这听起来完全像你的问题,我是积极的,这是事业。

另外,尝试删除@符号,看看是否有助于给你更多的信息。

以便

 $SQL_result = @mysql_query($SQL_requete); // run the query 

  $SQL_result = mysql_query($SQL_requete); // run the query 

如果查询抛出错误,这将停止任何错误抑制。

尝试:

 SELECT strftime("%Y-%d-%m", col_name, 'unixepoch') AS col_name 

它会将时间戳以毫秒为单位格式化为yyyy-mm-ddstring。