2013-11-11 2 views
0

У меня есть таблица, в которой есть данные. В графе «дата», у меня есть даты в следующем формате:UNIX_TIMESTAMP вывод NULL в MySQL?

ггггммдд т.е. 20131110

Я создал новое поле и назвал его newdate с текстовым форматом.

Затем я открываю окно SQL и поместите в

UPDATE wl_daily 
SET 
    newdate = UNIX_TIMESTAMP(date) 

По какой-то причине, он работает правильно, однако он выводит только NULL для всех строк. Кроме того, имя столбца пусто по какой-то причине

Любые предложения?

ответ

1

Хотя ответ Джона Cronde является правильным - оно не поможет вашему situtation

UNIX_TIMESTAMP(STR_TO_DATE(`date`, '%Y%m%d')) 

будет выполнять преобразование, например

SELECT UNIX_TIMESTAMP(STR_TO_DATE('20131111', '%Y%m%d')) 

возвращает

unix_timestamp(STR_TO_DATE('20131111', '%Y%m%d')) 
--------------------------------------------------- 
             1384128000 

Вы должны использовать это только для конвертируйте ваши столбцы в столбцы с конкретными датами. Преобразование каждого раза, когда вам нужно число, добавит нагрузку и замедлит запрос, если используется в производстве.

+0

Я пробовал следующее: _UPDATE wl_daily SET newdate = UNIX_TIMESTAMP (STR_TO_DATE (дата, '% Y% m% d')) _ однако еще раз вернул NULL – Xeo

+0

что такое 'date' должно быть столбцом, содержащим текст? цитата это с backticks, потому что дата зарезервированное слово – exussum

+0

дата - это уже существующая информация, то есть 20131110 и newdate будет временной отметкой даты. Я только что добавил backticks и все еще имею ту же самую проблему. – Xeo

2

Это потому, что ваше поле в строке и вы пытаетесь добавить к нему временную метку, которая не строка. Для этого вам нужно использовать valid datetime field, например timestamp.

Рекомендации: не хранить даты и время как строки. Храните их в своем native format. Он делает работу с датами и временем намного проще.

+0

Итак, я установил поле даты в «дату», однако по-прежнему я получаю NULL в поле newdate. Любые предложения по поводу того, что должно быть 2 поля? – Xeo

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