пример BETWEEN isnull и работа с датами

Tsql теория > пример BETWEEN isnull и работа с датами
05.04.2013 16:37:35



Статья:

if exists (select 1
from sysobjects
where id = object_id('spПроект_ПолучитьПроизводственныеЗатраты')
and type in ('P','PC'))
drop procedure spПроект_ПолучитьПроизводственныеЗатраты
go


CREATE PROCEDURE spПроект_ПолучитьПроизводственныеЗатраты
(
@ПотПрод_УИ char(9),
@Дата_С DATETIME = NULL,
@Дата_По datetime = NULL

)

AS

IF @Дата_С IS NOT null

-- Делаем так чтобы  в дате был первый  день месяца
set @Дата_С=CONVERT(datetime,LEFT(CONVERT(varchar(8), @Дата_С,112),6)+'01')
IF @Дата_По IS NOT NULL
set @Дата_По=CONVERT(datetime,LEFT(CONVERT(varchar(8), @Дата_По,112),6)+'01')



SELECT
h.[Затраты_Сумма_Доллар]
,h.[ВключеноВССР_Сумма_Доллар]
,h2.[1C77_УИ] AS [ЦентрЗатрат_1CV77_УИ]
,h2.[Наименование] AS [ЦентрЗатрат]
,h2.[1C77_Код] AS [ЦентрЗатрат_1CV77_Код]
FROM tblТУС_ПроизводственныеЗатраты h (nolock)
JOIN tblФС_ЦентрыЗатрат h2 (NOLOCK)
ON h2.ЦентрЗатрат_ID=h.ЦентрЗатрат_ID

WHERE h.ПотПрод_1C77_УИ=@ПотПрод_УИ

-- если даты  не заданны то подставляем даты  по умолчанию
AND h.[Период] BETWEEN isnull(@Дата_С,'1945-01-01') AND isnull(@Дата_По,'2100-01-01')

Go