select dbo.getAP('20100612','S') 结果为0 ,为什么不是'0601'SELECT T_DATE_SD FROM T_DATE WHERE T_DATE_SD <= '0612' AND T_DATE_ED >= '0612' AND T_DATE_MONTH <> '01'
结果为 '0601'函数带码:
IF OBJECT_ID (N'dbo.getAP', N'FN') IS NOT NULL
    DROP FUNCTION dbo.getAP;
GO
CREATE FUNCTION dbo.getAP(@vDate varchar(8),@vFlag char(1)) 
/******返回@vDate所在期间的起始日期或结束日期**@vFlag:S 起始日期,E 结束日期***/  
RETURNS VARCHAR
AS
BEGIN
DECLARE @re_Date VARCHAR(8),
@vMonth VARCHAR(2),
@vMMDD VARCHAR(4)
SET @vDate = LTRIM(RTRIM(@vDate))
SET @vMonth = RIGHT(LEFT(@vDate,6),2)
SET @vMMDD = RIGHT(@vDate,4)
SET @vFlag = RTRIM(LTRIM(@vFlag))
IF @vFlag  = '' OR @vFlag IS NULL 
SET @vFlag = 'S'
IF @vFlag <>'E'
BEGIN
IF @vMonth <> '01'
SELECT @re_Date = T_DATE_SD FROM T_DATE 
WHERE T_DATE_SD <= @vMMDD AND T_DATE_ED >= @vMMDD AND T_DATE_MONTH <> '01'
ELSE
SELECT @re_Date = T_DATE_SD FROM T_DATE 
WHERE T_DATE_ED >= @vMMDD AND T_DATE_MONTH = '01'
END
ELSE 
BEGIN
IF @vMonth <> '01'
SELECT @re_Date = T_DATE_ED FROM T_DATE 
WHERE T_DATE_SD <= @vMMDD AND T_DATE_ED >= @vMMDD AND T_DATE_MONTH <> '01'
ELSE
SELECT @re_Date = T_DATE_ED FROM T_DATE 
WHERE T_DATE_ED >= @vMMDD AND T_DATE_MONTH = '01'
END
RETURN @re_Date
END