SQL服务器:更改日期格式

问题描述 投票:0回答:5

我需要从“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;

但是,这是行不通的。

sql sql-server
5个回答
3
投票

理想情况下,你应该保存您的日期为善意,善意日期列,而不是文字。话虽这么说,日文本'2018-08-08'其实是在一个ISO格式,并且将仍然允许你做这样的事情的排序和比较反对其他日期文字,所以它并没有那么糟糕。

但这个文本转换为'08.08.2018'格式是错误的做法。如果有的话,你可能要考虑增加一个新的日期列new_date存储该最新信息。做到这一点,然后用填充它:

UPDATE daily_tasks
SET new_date = TRY_CONVERT(datetime, date);

0
投票

你的语法看起来像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), '/', '.')

0
投票

无论数据库,日期被存储在一个内部格式。这是存储日期的正确方法。不要存放日期为字符串。

当您查询,您可以指定格式:

CONVERT(VARCHAR(255), daily_tasks.date, 102)

或者,你甚至可以添加一个计算列提供以下信息:

alter table daily_tasks
    add date_display as ( CONVERT(VARCHAR(255), daily_tasks.date, 102) ) ;

0
投票

您可以在date列转换为VARCHAR的日期存储在您指定的格式。但我强烈反对这一点。你应该把它保存为一个日期。

如果你想要做一个SELECT出去,那么你可以把它转换成你这样的指定格式的数据:

 SELECT CONVERT(VARCHAR, daily_tasks.date, 4)

0
投票

存储您的日期作为DATE数据类型,当你阅读从数据库中的数据

    DECLARE @myDate DATE = '2018-08-08'
SELECT FORMAT(@myDate, 'dd.MM.yyyy')
SELECT CONVERT(VARCHAR(10), @myDate, 104)
© www.soinside.com 2019 - 2024. All rights reserved.