#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. тем не менее, я получаю ту же ошибку