我正在使用Microsoft SQL Server Management Studio来操作公共交通系统数据库。
我在数据库中有一个名为'dbo.tblStop_times'的表,其中两列的数据类型应为 time 。目前,它们都是nvarchar,并且它们以这样的模式存储数据 - "07:39:00"
(不含引号)
我对日期列也有同样的问题,但是几个小时前就在stackoverflow上找到了解决方案。
以下版本适用于将nvarchar列转换为日期列。
ALTER TABLE tblCalendar ALTER COLUMN [start_date] DATE NOT NULL;
我不确定我想要的是否可以实现,因为上面提到的转换效果很好,我认为它可能是可能的。
我所拥有的是 - nvarchar(8)
,我希望它是sql time data type
,类似 hh:mm:ss [如果可能的话 - 不会尾随nnnnnn - 纳秒组件]
答案 0 :(得分:1)
你应该可以这样做:
ALTER TABLE tblStop_times ALTER COLUMN start_time TIME NOT NULL;
Here是rextester。
编辑:
如果您没有有效的时间值,则表示您遇到问题。您应首先查找值:
select col
from tblStop_times
where try_convert(time, col) is null;
这将显示无法转换的值。如果您愿意,可以NULL
将它们删除,以便alter
能够正常工作:
update tblStop_times
set col = NULL
where try_convert(time, col) is null;