STR_TO_DATE возвращает ноль - PullRequest
0 голосов
/ 24 февраля 2019

Я пытаюсь преобразовать строку в дату в формате гггг / мм в гггг

STR_TO_DATE(SUBSTRING(time,1,4), '%Y') 

Это возвращает ноль для каждого значения, а также когда я пытаюсь выполнить преобразование, не избавляясь отмм:

STR_TO_DATE(REPLACE(time,'/',''), '%Y%m') 

Этот метод работал у меня раньше, я в растерянности из-за того, что мне не хватает.Заранее спасибо!

Изменить для уточнения: В конце концов я собираюсь вставить год в столбец с типом данных year, поэтому мне нужно преобразовать varchar в тип даты, чтобы можно было извлечь год для того, чтобывставить данные в новую таблицу

Я проверяю, будет ли она работать, прежде чем заполнять новый столбец такой командой:

INSERT INTO table (year)    
SELECT STR_TO_DATE(SUBSTRING(time,1,4), '%Y')    
FROM `origtable`

1 Ответ

0 голосов
/ 24 февраля 2019

Я пытаюсь преобразовать строку в дату в формате гггг / мм в гггг

Просто используйте left():

select left(time, 4) as yyyy

ТамНет необходимости конвертировать в дату или дату и время.Вам нужна простая строковая операция.

EDIT:

year - это действительно странный тип.Я бы просто использовал целое число.Но если вы используете его, вы можете вставить полную дату в поле:

select date(concat(time, '/01'))

Полученную дату можно вставить в столбец year.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...