我想将MySQL中的时间戳转换为日期。

我想格式化用户。将注册字段作为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(用户)。registration,‘d - m % % Y); news1 email2; name2 news2

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


当前回答

试一试:

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

它将以毫秒为单位将时间戳格式化为yyyy-mm-dd字符串。

其他回答

只要定个日期就行了

cast(user.registration as date)

要获得特定的格式,请使用date_format

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

SQLFiddle演示

如果注册字段确实是TIMESTAMP类型的,你应该可以这样做:

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

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

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

您应该将时间戳转换为日期。

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

FROM_UNIXTIME

我用'date'函数做到了这一点,如下所示:

(SELECT count(*) as the-counts,(date(timestamp)) as the-timestamps FROM `user_data` WHERE 1 group BY the-timestamps)