Думаю, я схожу с ума.Удаление времени из даты и времени SQL Server 2005
Я пытаюсь сделать SP на SQL Server 2005, который принимает дату, просматривает ее в другой таблице и назначает номер периода и номер недели (для целей финансового календаря).
Выход должен содержать дату как строку, а не дату и время.
Я просто НЕ МОЖЕТ получить дату, чтобы показать ее без времени.
Я попробовал несколько способов:
select cast(floor(cast(@CalcDate as float)) as datetime)
Я сделал функцию, которая преобразует его в строку и помещает его обратно снова:
CREATE FUNCTION dbo.DateToVarchar (@DateIn datetime)
RETURNS varchar(10)
AS
BEGIN
declare @DD [varchar] (2)
declare @MM [varchar] (2)
declare @YYYY [varchar] (4)
declare @DateOut [varchar] (10)
declare @DDLen [int]
declare @MMLen [int]
set @DD = datepart(dd,@DateIn)
set @DDLen = len(@DD)
set @DD = (case when @DDLen < 2 then '0' + @DD else @DD end)
set @MM = datepart(mm,@DateIn)
set @MMLen = len(@MM)
set @MM = (case when @MMLen < 2 then '0' + @MM else @MM end)
set @YYYY = datepart(yyyy,@DateIn)
set @DateOut = @YYYY + '-' + @MM + '-' + @DD
return @DateOut
END
Когда я запускаю выше функции вне SP я верну дату совсем нормально. Когда я запускаю его через SP он возвращается в 2012-12-30 00: 00: 00,000
Переменная @CalcDate объявлен как VARCHAR (10)
Любые идеи?
Заранее спасибо
EDIT
Вот тело SP до сих пор:
declare @StartDate [datetime]
, @EndDate [Datetime]
, @CalcDate [datetime] --This number will change in the WHILE loop to reflect the increment of days
, @Week [varchar]
, @Period [varchar]
, @i [int]
, @Year [int]
, @CalcDay [int]
, @CalcMonth [int]
, @CalcYear [int]
, @ConcatDate [char] (10)
set @StartDate = '2012-12-30'
set @EndDate = '2013-01-28'
set @Year = 2013
set @i = -1
-- Going to do a while loop here and instead of Week number and Period Number I'm going to do some calculations
set @Week = (Select WeekNum from aaGreensPeriodListTest Where PeriodNum = 1 and WeekNum = 1)
set @Period = (Select PeriodNum from aaGreensPeriodListTest Where PeriodNum = 1 and WeekNum = 1)
set @CalcDate = @StartDate + @i
set @CalcMonth = datepart(mm,@calcdate)
insert into aaGreensPeriodTest(RealDate,GreensYear,GreensPeriod,GreensWeek)
values (@CalcDate,@Year,@Period,@Week)
select @CalcDate as CalcDate, @CalcMonth as CalcMonth
я не уверен, что вы пытаетесь сделать. Не могли бы вы отправить код - или соответствующую часть - из SP, где вы используете результат? –
@Ic Отредактировано OP, чтобы показать SP в его нынешнем виде. Это все еще очень грубо. –
@AlisonWonderland Начиная чувствовать, что я что-то пропустил, так как не вижу, как вы конвертируете дату, используя функцию в своем SP, но как это значение выводится в SP? Как 'DATETIME' или' VARCHAR'? –