Конвертировать метку времени в дату в запросе MySQL - PullRequest
161 голосов
/ 12 февраля 2012

Я хочу преобразовать timestamp в MySQL в дату.

Я хотел бы отформатировать поле 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; news2

Как преобразовать это поле в дату?

Ответы [ 9 ]

318 голосов
/ 28 сентября 2012
DATE_FORMAT(FROM_UNIXTIME(`user.registration`), '%e %b %Y') AS 'date_formatted'
57 голосов
/ 18 февраля 2014

Преобразование метки времени в дату в 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)
51 голосов
/ 12 февраля 2012

Чтобы просто получить дату, вы можете cast it

cast(user.registration as date)

и для получения определенного формата используйте date_format

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

Демонстрация SQLFiddle

18 голосов
/ 12 февраля 2012

Если поле registration действительно имеет тип TIMESTAMP, вы можете просто сделать:

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

и регистрация должна отображаться как гггг-мм-дд

10 голосов
/ 03 февраля 2016

Просто используйте функцию mysql DATE:

mysql> select DATE(mytimestamp) from foo;
6 голосов
/ 28 февраля 2018

Вы должны преобразовать timestamp в date.

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

FROM_UNIXTIME

2 голосов
/ 13 февраля 2012

Если вы получаете запрос в свой вывод, вам нужно показать нам код, который фактически повторяет результат.Можете ли вы опубликовать код, который вызывает 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

Это остановит любое подавление ошибок, если запрос выдает ошибку.

1 голос
/ 24 апреля 2018

Я сделал это с помощью функции 'date', как описано в здесь :

(SELECT count(*) as the-counts,(date(timestamp)) as the-timestamps FROM `user_data` WHERE 1 group BY the-timestamps)
1 голос
/ 04 февраля 2016

Попробуйте:

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

Форматирует метку времени в миллисекундах в строку гггг-мм-дд.

...