Преобразование метки времени в запрос MySQL
Я хочу, чтобы преобразовать timestamp в 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(user.Регистрация, '%d / %m / %Y'); news1
email2; name2; news2
как преобразовать это поле в дату?
9 ответов:
конвертировать метку времени в дату в 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)
чтобы просто получить дату вы можете
castэтоcast(user.registration as date)а чтобы получить определенный формат используйте
date_formatdate_format(registration, '%Y-%m-%d')демо SQLFiddle
Если
registrationполе действительно имеет типTIMESTAMPвы должны быть в состоянии просто сделать:$sql = "SELECT user.email, info.name, DATE(user.registration), info.news FROM user, info WHERE user.id = info.id ";и регистрация должна отображаться как гггг-ММ-ДД
вы должны преобразовать
timestamptodate.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.
Comments