У меня есть следующая дата 20180305 в моей базе данных, хранящаяся как varchar (8).
Я хочу изменить формат даты на ДДММГГГГ
Я вижу элементы, разделенные с помощью подстроки, как показано ниже:
Substring ([Transaction Date],7,2) [Accounting Period] ,
Substring ([Transaction Date],5,2) [Accounting Period],
Substring ([Transaction Date],1,4) [Accounting Period]
Но как мне совместить их с CONCAT?
Спасибо
Отметьте СУБД (например, MySQL, SQL Server и т. д.), Которую вы используете.
Вам действительно стоит послушать, что говорит @HoneyBadger. Хранить даты в виде строк - просто ужасная идея. sqlblog.org/2009/10/12/…


Кажется, вы работаете с SQL Server, если да, то вы можете использовать:
SELECT REPLACE(CONVERT(VARCHAR(10), CAST('20180305' AS date), 105), '-','') AS [Accounting Period]
FROM table t;
Нет! Измените структуру данных:
alter table t alter column [Transaction Date] date;
Вам повезло. Ваш формат будет преобразован правильно.
Затем, если вы хотите, чтобы он был в определенном формате, используйте вычисляемый столбец:
alter table t add column transaction_date_mmddyyyy as
(replace(convert(varchar(10), [Transaction Date], 105), '-', '') )
Затем вы можете использовать дату - как дату, как правильно ее сохранить. Вы также можете выбрать нужный формат презентации.
Если вы собираетесь что-то изменить, это должен быть тип данных. Никогда сохраняет даты в столбце varchar, всегда использует соответствующий тип данных.