INT(月の値)を年の四半期を表すVARCHARに変換するSQL関数を作成しました。SQL-SERVER四半期機能
私のコードは以下の通りです。私は、この関数を渡す何らかの理由で(私のテストケースでは)有効な日付オブジェクトの場合
ALTER FUNCTION [sf_Quarters] (@DATE date)
Returns VARCHAR(4)
WITH EXECUTE AS CALLER
AS
BEGIN
DECLARE @QUARTER VARCHAR(4) = '';
DECLARE @DATEMONTH INT = DATEPART(MONTH, @DATE);
SELECT @QUARTER =
CASE
WHEN @DATEMONTH > 3 AND @DATEMONTH < 7 THEN 'Q1'
WHEN @DATEMONTH > 6 AND @DATEMONTH < 10 THEN 'Q2'
WHEN @DATEMONTH > 9 AND @DATEMONTH <= 12 THEN 'Q3'
WHEN @DATEMONTH > 0 AND @DATEMONTH < 4 THEN 'Q4'
ELSE NULL
END
RETURN @QUARTER
END
私は、単一の文字「Q」背中を出します。
DECLARE @DATE DATE = '20090405'
DECLARE @Qat VARCHAR
EXEC @Qat = sf_Quarters @DATE
SELECT @Qat
私はおそらくそれを壊すものをやっていることを実感しています。なぜ私はCHARSの最初のものだけを返すのか理解できません。
また、固定日付文字列を(Current_Timestamp)関数に置き換えて同じ結果を得ました。それはそんなに単純であるようです
を選択@Qat = dbo.sf_Quartersを呼び出すことが示唆方法に従ってください@ DATE) – BhatiaAshish
DECLARE @Qat VARCHAR - 1文字しか宣言していないので、「Q」しか得られないことを覚えています。 –