Как удалить 2 часа из всех строк строки столбца, представляющей дату и время

У меня есть текстовый столбец в mysql, данные которого представляют дату и время формат такой: 2018-03-06 15:18:17 pm

Иногда в этом столбце вместо даты отображается слово «НЕТ».

Мне нужно удалить 2 часа из всех строк в таблице.

был бы счастлив за пример кода.

имя таблицы: r_238 имя столбца: Ответ

Спасибо всем, кто ответит.

Извините, но никто не будет делать вашу домашнюю работу, если вы сначала не приложите немного усилий. Эта работа начинается с четкого примера и описания того, что вы пробовали до сих пор.

Ulrich Eckhardt 10.03.2018 15:30

@UlrichEckhardt. . . Было бы очень грустно, если бы это было домашнее задание. Студенты не должны знать, что значения даты / времени когда-либо хранятся в базах данных в виде строк.

Gordon Linoff 10.03.2018 15:33

Я не студент и не программист mysql, однако поискал в Интернете и не нашел ответа на этот вопрос

ברק רוזנפלד 10.03.2018 15:39
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
2
3
33
1

Ответы 1

Вам повезло. MySQL распознает этот формат как действительный datetime, поэтому вы можете просто преобразовать столбец в datetime. Остальное просто:

update r_238
    set answer = nullif (answer, 'NO');

alter table r_238 modify column answer datetime;

update r_238
    set answer = answer - interval 2 hour;

В будущем используйте для столбцов подходящие типы. Значения datetime следует хранить как datetime, а не как строку.

# 1054 - Неизвестный столбец columnAnswer в r_238

ברק רוזנפלד 10.03.2018 15:32

@ ברקרוזנפלד. . . В этом ответе нет идентификатора columnAnswer. Вы можете удалить ключевое слово column из alter table, это необязательно.

Gordon Linoff 10.03.2018 15:36

Я редактировал свои вопросы, так как получил эту ошибку. Неверное значение даты и времени: «НЕТ» для столбца «ответ» в строке 1

ברק רוזנפלד 10.03.2018 15:40

@ ברקרוזנפלד. . . Тогда ваше исходное утверждение неверно, и столбец не в указанном вами формате. Я бы посоветовал вам подробнее изучить свою таблицу, потому что ответ на заданный вами вопрос вам не поможет.

Gordon Linoff 10.03.2018 15:41

если в столбце нет даты, будет отображаться слово «НЕТ», а не более сложные вещи

ברק רוזנפלד 10.03.2018 15:42

@ ברקרוזנפלד. . . Для этого следует использовать NULL.

Gordon Linoff 10.03.2018 15:48

Да, я понял, что следует использовать Null, но это не так ...

ברק רוזנפלד 10.03.2018 15:49

получил эту ошибку: # 1292 - Неверное значение даты и времени: '2018-03-06 03:44:52 pm' для столбца 'answer' в строке 517

ברק רוזנפלד 10.03.2018 16:00

@ ברקרוזנפלד. . . Это должно быть хорошо. Вот скрипт SQL: sqlfiddle.com/#!9/9eecb/20259. Возможно, в строковом значении есть скрытые или нераспознанные символы. В любом случае, начинаете ли вы понимать, почему вы хотите использовать правильные типы в базе данных? Необходимость управлять значениями, которые являются строками, действительно вызывает боль.

Gordon Linoff 10.03.2018 16:07

Другие вопросы по теме