Ответ 1
DATE_FORMAT(FROM_UNIXTIME(`user.registration`), '%e %b %Y') AS 'date_formatted'
Я хочу преобразовать 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; имя2; news2
Как я могу преобразовать это поле на сегодняшний день?
DATE_FORMAT(FROM_UNIXTIME(`user.registration`), '%e %b %Y') AS 'date_formatted'
Составьте таблицу с целочисленной временной меткой:
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)
Чтобы просто получить дату, вы можете cast
это
cast(user.registration as date)
и для получения определенного формата используйте date_format
date_format(registration, '%Y-%m-%d')
Если поле registration
действительно имеет тип TIMESTAMP
, вы можете просто сделать:
$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;
Вам следует конвертировать timestamp
в date
.
select FROM_UNIXTIME(user.registration, '%Y-%m-%d %H:%i:%s') AS 'date_formatted'
Если вы получаете запрос в своем выводе, вам нужно показать нам код, который фактически отображает результат. Можете ли вы отправить код, который вызывает 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
Это остановит подавление ошибок, если запрос вызывает ошибку.
Я сделал это с помощью функции "дата", как описано в здесь:
(SELECT count(*) as the-counts,(date(timestamp)) as the-timestamps FROM 'user_data' WHERE 1 group BY the-timestamps)
Попробуйте:
SELECT strftime("%Y-%d-%m", col_name, 'unixepoch') AS col_name
Он будет форматировать временную метку в миллисекундах до строки yyyy-mm-dd.
FROM_UNIXTIME(unix_timestamp, [format])
это все, что вам нужно
FROM_UNIXTIME(user.registration, '%Y-%m-%d') AS 'date_formatted'
FROM_UNIXTIME
получает числовое значение и преобразует его в объект DATE
,
или если задана строка формата, она возвращает ее в виде строки.
Старое решение состояло в том, чтобы получить начальный объект даты и отформатировать его с помощью второй функции DATE_FORMAT
... но это больше не нужно