2015-12-29 3 views
0

Я хочу сохранить количество секунд как целое число в базе данных. Что-то вроде этого:Как сохранить количество секунд в базе данных?

1451425369 

Но я не могу найти подходящую функцию для этого. CURRENT_TIMESTAMP, CURTIME(), NOW() и .. будет хранить его, как это:

2014-11-11 12:45:34 

Следует отметить, я не доступ к чему-то вроде PHP, потому что я хочу сделать это с помощью TRIGGER. Поэтому я не могу использовать что-то вроде time(). Есть идея?

+0

Не знаете, сколько секунд занимает время? В любом случае, почему бы не использовать нормальное поле 'int'? –

+0

@Pekka 웃 Я использую обычный тип данных 'int (11)', как его заполнить? Мне нужно MySQL-функция, чтобы записать ее в запрос. – Shafizadeh

+0

@MojoJojo MySQL – Shafizadeh

ответ

4

1451425369 выглядит как временная метка UNIX (2015-12-29 21:42 UTC). TIMESTAMP тип поля хранит в MySQL, как метку времени UNIX под капотом, и вы можете получить, что базовое значение временной метки, делая что-то вроде:

SELECT UNIX_TIMESTAMP(field_name) FROM table_name; 

Если вам нужен текущий UNIX метку времени, UNIX_TIMESTAMP() без аргументов даст вам ток целочисленное значение. Вы можете использовать это в INSERT/UPDATE без проблем.

+0

Мой вопрос: Как я могу вставить эту временную метку UNIX в базу данных? – Shafizadeh

+0

@Shafizadeh Вы можете использовать 'UNIX_TIMESTAMP()' без аргумента, чтобы получить текущее значение временной метки. Что-то вроде 'INSERT INTO table_name (field_name) VALUES (UNIX_TIMESTAMP())' будет вставлять его. Обычно вам лучше использовать тип поля «TIMESTAMP» и его более удобное представление данных. – ceejayoz

+0

OH! Понимаю. Это именно то, что мне нужно :-) Спасибо +1 – Shafizadeh

1

Это был дан ответ в another post. Оклейка ответ ниже:

CREATE TABLE `abc` (
    `pk` INT(10) NOT NULL AUTO_INCREMENT, 
    `id` VARCHAR(10) NULL DEFAULT NULL, 
    `timestamp` INT(11) NOT NULL DEFAULT '0', 
    PRIMARY KEY (`pk`) 
) 
ENGINE=InnoDB; 

INSERT INTO abc (id, timestamp) VALUES ('', UNIX_TIMESTAMP()); 
-- Wait a few seconds 
INSERT INTO abc (id, timestamp) VALUES ('', UNIX_TIMESTAMP()); 
-- Wait a few seconds 
INSERT INTO abc (id, timestamp) VALUES ('', UNIX_TIMESTAMP()); 
+0

Yea ..! Это может быть хорошо :-) +! – Shafizadeh

2

Это звучит, как вы используете базу данных MySQL. Если вы хотите использовать временную метку Unix, такую ​​как первое целочисленное значение, которое вы упомянули в качестве примера, вы можете использовать UNIX_TIMESTAMP(). Если вы хотите количество секунд только сегодня, начиная с 0 в 12:00, вы можете сохранить (HOUR(CURTIME())*60*60)+(MINUTE(CURTIME())*60)+SECOND(CURTIME()).

INSERT INTO ttestsec(Sec) VALUES((HOUR(CURTIME())*60*60)+(MINUTE(CURTIME())*60)+SECOND(CURTIME())); 
+1

Почему не просто более простой time_to_sec (curtime())? – Niagaradad

Смежные вопросы