来自nvachar的时间和日期

时间:2019-03-18 06:17:40

标签: sql sql-server

想在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)

预期结果应与列类型中的格式匹配

3 个答案:

答案 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)