我需要从“YYYY-MM-DD”到“DD.MM.YYYY”更改日期格式。
我在我的表像这样'2018-08-08'
数据,我需要将其转换为'08.08.2018'
。
我努力了:
UPDATE daily_tasks
SET date = REPLACE(date, date, CONVERT(VARCHAR(255), daily_tasks.date, 102))
WHERE 1;
但是,这是行不通的。
理想情况下,你应该保存您的日期为善意,善意日期列,而不是文字。话虽这么说,日文本'2018-08-08'
其实是在一个ISO格式,并且将仍然允许你做这样的事情的排序和比较反对其他日期文字,所以它并没有那么糟糕。
但这个文本转换为'08.08.2018'
格式是错误的做法。如果有的话,你可能要考虑增加一个新的日期列new_date
存储该最新信息。做到这一点,然后用填充它:
UPDATE daily_tasks
SET new_date = TRY_CONVERT(datetime, date);
你的语法看起来像SQL Sever
,所以我会做:
UPDATE daily_tasks
SET Col = REPLACE(CONVERT(VARCHAR(10), daily_tasks.date, 103), '/', '.')
WHERE . . . ;
但是,我不建议这样做,只是在必要时使用CONVERT()
与SELECT
声明:
SELECT REPLACE(CONVERT(VARCHAR(10), daily_tasks.date, 103), '/', '.')
无论数据库,日期被存储在一个内部格式。这是存储日期的正确方法。不要存放日期为字符串。
当您查询,您可以指定格式:
CONVERT(VARCHAR(255), daily_tasks.date, 102)
或者,你甚至可以添加一个计算列提供以下信息:
alter table daily_tasks
add date_display as ( CONVERT(VARCHAR(255), daily_tasks.date, 102) ) ;
您可以在date
列转换为VARCHAR的日期存储在您指定的格式。但我强烈反对这一点。你应该把它保存为一个日期。
如果你想要做一个SELECT
出去,那么你可以把它转换成你这样的指定格式的数据:
SELECT CONVERT(VARCHAR, daily_tasks.date, 4)
存储您的日期作为DATE数据类型,当你阅读从数据库中的数据
DECLARE @myDate DATE = '2018-08-08'
SELECT FORMAT(@myDate, 'dd.MM.yyyy')
SELECT CONVERT(VARCHAR(10), @myDate, 104)