время и дата из nvachar

#sql #sql-server

#sql #sql-сервер

Вопрос:

Хотите преобразовать NVarchar во время и дату с помощью команды update column в sql server

  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)
  

Я хочу обновить таблицу времени соответствующим типом данных time и date в следующем столбце.

 update  dbo.timeconvert set Duration = time(Duration_Load) , Estimated_Date_of_Arrival = date(Estimated_Date_of_Arrival)
  

Ожидаемый результат должен соответствовать формату в типе столбца

Ответ №1:

Вы можете попробовать это:

 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. Вы можете попробовать это…. ВЫБЕРИТЕ [sno], [Duration_Load], СЛЕВА ([Длительность],5) В КАЧЕСТВЕ [Длительности], [оценочная_дата_первоначальной загрузки], [оценочная_дата_первоначальной загрузки] Из DBO. [преобразование времени]

Ответ №2:

используйте функции cast() и convert()

 update  dbo.timeconvert set Duration = CONVERT( TIME, Duration_Load ), Estimated_Date_of_Arrival 
= cast(Estimated_Date_of_Arrival as date)
  

Ответ №3:

Пожалуйста, попробуйте это.

 UPDATE dbo.timeconvert 
SET Duration = CONVERT( TIME, Duration_Load ), Estimated_Date_of_Arrival = CONVERT(DATE,Estimated_Date_of_Arrival_Load)
  

Комментарии:

1. Получение ошибки ниже: Ошибка SG 241, уровень 16, состояние 1, строка 27 При преобразовании даты и / или времени из символьной строки произошел сбой преобразования.

2. Пожалуйста, измените длину типа данных [оценочная_дата_о_приключения_load] [nvarchar](10) на [оценочная_дата_о_приключения_load] [nvarchar](100)

3. тем не менее, я получаю ту же ошибку