sql скалярная функция возвращает неверный квартал - PullRequest
1 голос
/ 01 июля 2010

Я уверен, что я упускаю из виду простую вещь, я признаю, что я все еще изучаю различные аспекты SQL, и функция Datepart - одна ..

Я ввожу дату и возвращаю недопустимый квартал,вот код:

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

ALTER FUNCTION Dbo.FN_Get_Quarter (
  -- the parameters for the function here
  @date                  varchar(10)
) RETURNS BIT
AS
BEGIN

  RETURN datepart(qq,@date)

END

Вот тест, который я использую, и возвращаемое значение ...

select dbo.FN_GET_QUARTER('07-14-2010') 

... возвращает 1

Ответы [ 2 ]

1 голос
/ 01 июля 2010

datepart возвращает int, но вы объявили тип возвращаемой функции как бит

0 голосов
/ 01 июля 2010

Возврат BIT означает, что значение может быть только 0 или 1. Таким образом, вы должны изменить тип данных на INT, чтобы получить реальное возвращаемое значение:

ALTER FUNCTION Dbo.FN_Get_Quarter (
  @date                  varchar(10)
) RETURNS INT
AS
BEGIN

  RETURN datepart(qq,@date)

END
...