Справка по Transact SQL - PullRequest
       1

Справка по Transact SQL

0 голосов
/ 23 марта 2011

Если у вас возникли проблемы с запуском этого, создайте веб-приложение, использующее Visual Studio 2010, и серверная часть sql2008r2 получит эту ошибку

"Ошибка вставки записи. Ошибка преобразования при преобразовании даты и / или времени из символьной строки."

У меня есть эти поля и типы данных

StartDate value=date
StartTime value=varchar(8)
EndDate value = date
EndTime value=varchar(8)

Я пытаюсь добавить startdate + StartTime в поле customstartdate, но происходит ошибка при конвертации

convert(varchar(10), @StartDate,101) +
   stuff(right(convert(varchar(26),@StartTime,109 ),15),7,7, ' ' ),
    convert(varchar(10),@EndDate, 101) +
   stuff(right(convert(varchar(26),@EndTime,109 ),15),7,7, ' ' ),

1 Ответ

1 голос
/ 23 марта 2011

Вам следует проверить свои преобразования в SQL Management Studio, чтобы увидеть, что они возвращают.

declare @StartDate datetime = getdate()
declare @EndDate datetime = getdate()
declare @StartTime varchar(8) = '10:00:00'
declare @EndTime varchar(8) = '11:00:00'

select
convert(varchar(10), @StartDate,101) +
   stuff(right(convert(varchar(26),@StartTime,109 ),15),7,7, ' ' ) as StartDate,
    convert(varchar(10),@EndDate, 101) +
   stuff(right(convert(varchar(26),@EndTime,109 ),15),7,7, ' ' ) as EndDate

Результат

StartDate           EndDate
------------------- -------------------
03/23/201110:00:    03/23/201111:00: 

Вы также можете разбить преобразование на части, чтобы увидеть, что происходит

select
  convert(varchar(10), @StartDate,101) as DatePart, 
  convert(varchar(26),@StartTime,109) as Time26,
  right(convert(varchar(26),@StartTime,109 ),15) as Time15,
  stuff(right(convert(varchar(26),@StartTime,109 ),15),7,7, ' ' ) as TimeStuff

Результат

DatePart   Time26                     Time15          TimeStuff
---------- -------------------------- --------------- ---------
03/23/2011 10:00:00                   10:00:00        10:00: 

Это то, что я бы сделал. Результатом является дата и время.

select
  convert(datetime, convert(varchar(10), @StartDate, 101)+' '+@StartTime) as StartDate,
  convert(datetime, convert(varchar(10), @EndDate, 101)+' '+@EndTime) as EndDate

Результат

StartDate               EndDate
----------------------- -----------------------
2011-03-23 10:00:00.000 2011-03-23 11:00:00.000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...