使用现有数据将日期时间列更改为 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
在您的 select 查询中将日期时间列转换为短日期
SELECT CONVERT(date,datetimecomlum) AS short_date FROM A
我有 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
在您的 select 查询中将日期时间列转换为短日期
SELECT CONVERT(date,datetimecomlum) AS short_date FROM A