SQL Server:更改日期格式

时间:2019-02-04 12:28:07

标签: sql sql-server

我需要将日期格式从“ 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;

但是,它不起作用。

5 个答案:

答案 0 :(得分:3)

理想情况下,您应该将日期存储为真实的日期列,而则存储为文本。话虽这么说,日期文本print(v['Name'][0])实际上是ISO格式,并且仍然可以让您进行诸如排序和与其他日期文字进行比较之类的事情,所以还不错。

但是将文本转换为'2018-08-08'格式是错误的事情。如果有的话,您可能要考虑添加新的日期列'08.08.2018'来存储此日期信息。这样做,然后用以下命令填充它:

new_date

答案 1 :(得分: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), '/', '.')

答案 2 :(得分:0)

无论数据库如何,日期都以内部格式存储。这是存储日期的正确方法。 不要将日期存储为字符串。

您可以在查询时指定格式:

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

或者,您甚至可以添加一个计算列来提供此信息:

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

答案 3 :(得分:0)

您可以将date列转换为varchar,以指定格式存储日期。但是,我强烈建议不要这样做。您应该将其保存为日期。

如果您想进行SELECT提取数据,则可以将其转换为指定的格式,如下所示:

 SELECT CONVERT(VARCHAR, daily_tasks.date, 4)

答案 4 :(得分:0)

将日期存储为DATE数据类型,并在您从数据库使用中读取数据时将其存储

    DECLARE @myDate DATE = '2018-08-08'
SELECT FORMAT(@myDate, 'dd.MM.yyyy')
SELECT CONVERT(VARCHAR(10), @myDate, 104)