Преобразование формата даты

Я имею дело с базой данных sql, где дата записывается в формате «2020-348T08:55». Мне нужно преобразовать это в datetime.

Пожалуйста, направьте, если есть возможный способ сделать это?

Типы данных даты и времени не имеют формата, вы говорите, что храните их как другой тип данных? Если это так, вам нужно исправить свой дизайн. Какую дату представляет ваше значение?

Thom A 13.12.2020 15:30
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
1
52
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

С функциями строки и даты/времени извлеките год и дни, чтобы создать DATETIME без времени и, наконец, добавьте часть времени:

SELECT 
  CAST(DATEADD(
    DAY, 
    CAST(SUBSTRING(LEFT(col, CHARINDEX('T', col) - 1), 6, LEN(col)) AS INTEGER), 
    DATEFROMPARTS(CAST(LEFT(col, 4) AS INTEGER) - 1, 12, 31)
  ) AS DATETIME) + 
  CAST(RIGHT(col, 5) AS DATETIME) AS result
FROM tablename

Если часть дней всегда представляет собой трехзначное число, ее можно упростить:

SELECT 
  CAST(DATEADD(
    DAY, 
    CAST(SUBSTRING(col, 6, 3) AS INTEGER), 
    DATEFROMPARTS(CAST(LEFT(col, 4) AS INTEGER) - 1, 12, 31)
  ) AS DATETIME) + 
  CAST(RIGHT(col, 5) AS DATETIME) AS result
FROM tablename

Замените col на название вашего столбца.
Смотрите демо.
Результат:

> | result                  |
> | :---------------------- |
> | 2020-12-13 08:55:00.000 |

Спасибо за помощь, а теперь как мне сделать обратное, например: 2020-12-13 08:55 на '2020-348T08:55'. При выполнении запроса я хочу установить дату в формате даты и времени и объявить 2020-348T08:55:29.752-05:00

Student 13.12.2020 19:12

@Студент, это новое требование, для которого вы должны задать новый вопрос.

forpas 13.12.2020 19:13

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