2015-04-09 2 views
0

Это немного странно. Мне нужно сохранить временную метку в varchar (15), столбец определяется как varchar (15) и сохраняет фактическую числовую метку времени.Как преобразовать временную метку в строку

У меня есть что-то вроде «2015-03-01 20:00:00», и его нужно сохранить как «1427725068». Есть ли способ сделать это непосредственно в mysql? Спасибо

+0

UNIX_TIMESTAMP() https: // DEV .mysql.com/doc/refman/5.5/ru/date-and-time-functions.html # function_utc-time – Alex

+0

Это то, что вы, вероятно, ищете: http://stackoverflow.com/questions/11133760/my sql-convert-datetime-to-unix-timestamp – Joram

ответ

1

Даты варчара не являются реальной датой, и вам необходимо преобразовать их в настоящую дату, прежде чем выполнять дальнейшую операцию. Функция str_to_date, а затем использовать unix_timestamp на него, чтобы получить значение, как

mysql> select unix_timestamp(str_to_date('2015-03-01 20:00:00','%Y-%m-%d %H:%i:%s')) as utime; 
+------------+ 
| utime  | 
+------------+ 
| 1425220200 | 
+------------+ 
+0

Должен работать, но если вы попытаетесь вставить в таблицу (field_varchar_15) значения mysql> select unix_timestamp (str_to_date ('2015-03-01 20:00:00', '% Y -% m -% d% H:% i:% s ')) как utime; он не хранит реальную временную метку, но дата конвертирована в 2015- ..... – petekaner

+0

Я не получил, не могли бы вы немного объяснить? –

+0

извините, недоразумение :) вы правы, что работает – petekaner

0

Вот скрипку: http://sqlfiddle.com/#!2/dd7f40/1

create table table1 (id int, timestamp_varchar varchar(15)); 

insert into table1 values(1,UNIX_TIMESTAMP('2015-03-01 20:00:00')); 

select * from table1; 

выход:

1, 1425258000 
Смежные вопросы