使用现有数据将日期时间列更改为 varchar

Alter datetime column to varchar with existing data

我有 table A,它有一个日期时间格式的名为 LastUpdateDate 的列。它使用 Apr 18 2017 11:15AM 之类的时间数据来保持日期。我想摆脱时间数据并以 dd/mm/yyyy 格式保留日期。

所以我想,我将列更改为 VARCHAR。但我有现有数据。更改列时会出错吗?或者还有其他选择吗?我该怎么办?

您应该将列更改为varchar
如果有的话,您应该将其更改为 date 数据类型:

 ALTER TABLE YourTable
 ALTER COLUMN LastUpdateDate DATE
 GO

这是一个包含一些数据的示例 table(在您以后的问题中省去这一步):

CREATE TABLE YourTable 
(
    id int identity(1,1),
    LastUpdateDate datetime
)

INSERT INTO YourTable VALUES 
(GETDATE()),
(DATEADD(DAY, 1, GETDATE())),
(DATEADD(DAY, 2, GETDATE())),
(DATEADD(DAY, 3, GETDATE())),
(DATEADD(DAY, 4, GETDATE()))

改变table语句:

 ALTER TABLE YourTable
 ALTER COLUMN LastUpdateDate DATE
 GO

测试:

 SELECT *
 FROM YourTable

结果:

id  LastUpdateDate
1   18.04.2017 00:00:00
2   19.04.2017 00:00:00
3   20.04.2017 00:00:00
4   21.04.2017 00:00:00
5   22.04.2017 00:00:00

See a live demo on rextester.

在您的 select 查询中将日期时间列转换为短日期

SELECT CONVERT(date,datetimecomlum) AS short_date FROM A