在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。