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

时间:2012-02-12 18:45:35

标签: mysql sql date-formatting

我想将MySQL中的timestamp转换为日期。

我想将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_FORMAT(user.registration, '%d/%m/%Y')
DATE(user.registration)

我在写文本文件之前回显结果,然后得到:

  

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

     

EMAIL2; NAME2;新闻2

如何将该字段转换为日期?

11 个答案:

答案 0 :(得分:308)

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

答案 1 :(得分:56)

在MYSQL中将时间戳转换为日期

使用整数时间戳创建表:

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)

答案 2 :(得分:49)

要获得约会,您可以cast

cast(user.registration as date)

并使用date_format

获取特定格式
date_format(registration, '%Y-%m-%d')

SQLFiddle demo

答案 3 :(得分:18)

如果registration字段确实属于TIMESTAMP类型,您应该可以这样做:

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

并且注册应显示为yyyy-mm-dd

答案 4 :(得分:10)

只需使用mysql的DATE功能:

mysql> select DATE(mytimestamp) from foo;

答案 5 :(得分:6)

您应该将timestamp转换为date

select FROM_UNIXTIME(user.registration, '%Y-%m-%d %H:%i:%s') AS 'date_formatted'

FROM_UNIXTIME

答案 6 :(得分:2)

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

例如,如果你在php中使用过单引号,它将打印变量名,而不是值

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

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

答案 7 :(得分:1)

尝试:

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

它会将时间戳(以毫秒为单位)格式化为yyyy-mm-dd string。

答案 8 :(得分:1)

我是用' date'做到的。功能如here

中所述
browser.switchTo().frame($('.full-iframe').getWebElement());

答案 9 :(得分:1)

您可以尝试
日期为时间戳类型,其格式如下:c:\devel\a_anomaly_detection\.venv\scripts\python.exe c:\devel\a_anomaly_detection\.venv\lib\site-packages\wfastcgi.pyfunction loadDisplayPos(){ var element = document.getElementById('checkboxes'); var tops = element.getElementsByTagName('input'); var tags = []; for (var i=0, len=tops.length; i<len; i++) { if ( tops[i].type === 'checkbox' ) { if (tops[i].checked){ tags.push( tops[i].value); } } } var selectedPost = document.getElementById('posapp').innerHTML= tags; }

‘YYYY-MM-DD HH:MM:SS’

PHP ‘2008-10-05 21:34:02.’函数将MySQL时间戳解析为$res = mysql_query("SELECT date FROM times;"); while ( $row = mysql_fetch_array($res) ) { echo $row['date'] . " "; } ,可用于在PHP date函数中进一步解析或格式化。

以下是一些其他可能实际使用的示例日期输出格式:

strtotime

答案 10 :(得分:0)

FROM_UNIXTIME(unix_timestamp, [format])是您所需要的

FROM_UNIXTIME(user.registration, '%Y-%m-%d') AS 'date_formatted'

FROM_UNIXTIME获取一个数字值并将其转换为DATE对象,
或者给定格式字符串,则将其作为字符串返回。

较早的解决方案是获取初始日期对象并使用第二个功能DATE_FORMAT对其进行格式化...但这不再是必需的