the conversion of a char data type to a datetime data type resulted in an out-of-range dat

golem14
Дата: 21.01.2009 14:30:34
ошибка при выполнении dts пакета в mssql

the conversion of a char data type to a datetime data type resulted in an out-of-range datetime value

кто встречался с такой проблеммой, помогите

вот код:

SELECT cm_Contact.Name, cm_Task.Name as Title,
((CASE WHEN DAY(cm_Task.StartDateTime)<10 THEN '0' ELSE '' END) + CAST(DAY(cm_Task.StartDateTime) as varchar(2))+ '.' + (CASE WHEN MONTH(cm_Task.StartDateTime)<10 THEN '0' ELSE '' END) + CAST(MONTH(cm_Task.StartDateTime) as varchar(2))+ '.' + CAST(YEAR(cm_Task.StartDateTime) as varchar(4))) as StartDateTime
,((CASE WHEN DAY(cm_Task.EndDateTime)<10 THEN '0' ELSE '' END) + CAST(DAY(cm_Task.EndDateTime) as varchar(2))+ '.' + (CASE WHEN MONTH(cm_Task.EndDateTime)<10 THEN '0' ELSE '' END) + CAST(MONTH(cm_Task.EndDateTime) as varchar(2))+ '.' + CAST(YEAR(cm_Task.EndDateTime) as varchar(4))) as EndDateTime,
DATEDIFF(day, cm_Task.StartDateTime,
cm_Task.EndDateTime) AS Days, cm_Contact.Phone1, cm_Contact.EMailAddress1, cm_Source.Name AS SoursName, cm_Task.ResultDetails
FROM cm_ContactSource INNER JOIN
cm_Source ON cm_ContactSource.Source_id = cm_Source.ID INNER JOIN
cm_Task INNER JOIN
cm_Contact ON cm_Task.Contact_ID = cm_Contact.ID ON cm_ContactSource.Subj_id = cm_Contact.ID
WHERE cm_Task.StartDateTime BETWEEN CAST((CAST(Year(GETDATE()) as varchar)+'-' + CAST(MONTH(GETDATE())-1 as varchar) + '-01 00:00:00.000') AS datetime) AND DATEADD(d,-1,CAST((CAST(Year(GETDATE()) as varchar)+'-' + CAST(MONTH(GETDATE()) as varchar) + '-01 23:59:00.000') AS datetime))
AND Manager_ID=35178
ORDER BY StartDateTime
daw
Дата: 21.01.2009 14:35:37

строка, которую вы преобразовываете к datetime может по-разному интерпретироваться
yyyy-mm-dd или yyyy-dd-mm в зависимости от установленного в данный момент
языка и set dateformat
> CAST((CAST(Year(GETDATE()) as > varchar)+'-' + CAST(MONTH(GETDATE())-1 as varchar) + '-01 00:00:00.000') > AS datetime)


Posted via ActualForum NNTP Server 1.4

Knyazev Alexey
Дата: 21.01.2009 14:35:43
может натолкнёт на мысль:

select convert(datetime, '20090132')

=)))))
-=DiM@n=-
Дата: 21.01.2009 14:41:39
SELECT  cm_Contact.Name, 
cm_Task.Name as Title, 
		CONVERT(varchar(10), StartDateTime, 104) as StartDateTime,
		CONVERT(varchar(10), EndDateTime, 104) as EndDateTime, 
		DATEDIFF(day, cm_Task.StartDateTime, cm_Task.EndDateTime) AS Days, 
		cm_Contact.Phone1, 
		cm_Contact.EMailAddress1, 
		cm_Source.Name AS SoursName, 
		cm_Task.ResultDetails
FROM cm_ContactSource 
		INNER JOIN cm_Source 
			ON cm_ContactSource.Source_id = cm_Source.ID 
		INNER JOIN cm_Task 
		INNER JOIN cm_Contact 
			ON cm_Task.Contact_ID = cm_Contact.ID 
			ON cm_ContactSource.Subj_id = cm_Contact.ID
WHERE cm_Task.StartDateTime BETWEEN DATEADD(m, DATEDIFF(m, 0, GETDATE()) - 1, 0) AND DATEADD(d, -1, DATEADD(m, DATEDIFF(m, 0, GETDATE()), 0))
	  AND Manager_ID=35178
ORDER BY StartDateTime
iap
Дата: 21.01.2009 14:47:05
Кстати говоря, вот этот период
WHERE cm_Task.StartDateTime BETWEEN CAST((CAST(Year(GETDATE()) as varchar)+'-' + CAST(MONTH(GETDATE())-1 as varchar) + '-01 00:00:00.000') AS datetime) AND DATEADD(d,-1,CAST((CAST(Year(GETDATE()) as varchar)+'-' + CAST(MONTH(GETDATE()) as varchar) + '-01 23:59:00.000') AS datetime))
означает "с 0 часов 1 числа прошлого месяца по 24 часа 1 числа текущего месяца"?
IMHO, странный период. Первое число текущего месяца не лишнее? Может, так надо:
WHERE cm_Task.StartDateTime>=DATEADD(MONTH,-1, CONVERT(CHAR(6), GETDATE(),112)+'01')
  AND cm_Task.StartDateTime<CONVERT(CHAR(6), GETDATE(),112)+'01')
?
Glory
Дата: 21.01.2009 14:51:50
golem14
ошибка при выполнении dts пакета в mssql

the conversion of a char data type to a datetime data type resulted in an out-of-range datetime value

кто встречался с такой проблеммой, помогите

А зачем вы так "мучаете" поле cm_Task.StartDateTime ? Оно у вас разве не типа datetime ?
golem14
Дата: 22.01.2009 09:03:54
всем спасибо за помощь. я пробовал менять различные языковые настройки системы, ничего не помогло.
странно почему вообще такая ошибка стала происходить, потомучто сервер с sql стоит отдельно и его никто не трогает.
видимо придеться учить sql )) и править все отчеты
подскажите с чего начать изучение?
Knyazev Alexey
Дата: 22.01.2009 09:13:42
golem14

подскажите с чего начать изучение?


firststeps.ru