想在SQL Server中使用更新列命令将NVarchar转换为时间和日期
CREATE TABLE [dbo].[timeconvert](
[sno] [int] NULL,
[Duration_Load] [nvarchar](7) NULL,
[Duration] [time](7) NULL,
[Estimated_Date_of_Arrival_Load] [nvarchar](10) NULL,
[Estimated_Date_of_Arrival] [date] NULL )
INSERT [dbo].[timeconvert] VALUES (1, N'03:26', NULL, N'29.01.2019', NULL) ,(2, N'02:45', NULL, N'30.01.2019', NULL),(3, NULL, NULL, N'03.02.2019', NULL),(4, N'10.25', NULL, N'11.02.2019', NULL)
我想在下一列中使用时间和日期数据类型相应地更新时间表。
update dbo.timeconvert set Duration = time(Duration_Load) , Estimated_Date_of_Arrival = date(Estimated_Date_of_Arrival)
预期结果应与列类型中的格式匹配
答案 0 :(得分:3)
您可以尝试以下方法:
UPDATE dbo.timeconvert
SET Duration = REPLACE(Duration_Load,'.',':'),
Estimated_Date_of_Arrival = SUBSTRING(Estimated_Date_of_Arrival_Load,4,2)+'/'+LEFT(Estimated_Date_of_Arrival_Load,2)+'/'+RIGHT(Estimated_Date_of_Arrival_Load,4)
答案 1 :(得分:1)
使用cast()和convert()函数
update dbo.timeconvert set Duration = CONVERT( TIME, Duration_Load ), Estimated_Date_of_Arrival
= cast(Estimated_Date_of_Arrival as date)
答案 2 :(得分:1)
请尝试这个。
UPDATE dbo.timeconvert
SET Duration = CONVERT( TIME, Duration_Load ), Estimated_Date_of_Arrival = CONVERT(DATE,Estimated_Date_of_Arrival_Load)