我有一个存储过程,它根据与日期输入匹配的日期来获取记录,该日期输入到目前为止工作正常。 表格中的日期和输入日期都被格式化为日期时间。
我没有比较完整的日期,而是想改变它,以便它只比较月和日,以便它适用于任何一年的输入。
示例:
表格中的日期保存为2013-04-30
,输入日期为2014-04-30
。
我想要的是,只要月份和日期匹配,存储过程仍然会独立于年份返回该记录。
我的存储过程:
ALTER PROCEDURE [dbo].[FetchDays]
@inputDate datetime
AS
BEGIN
SET NOCOUNT ON;
SELECT dateID,
dayDT,
countries,
regions
FROM DaysDT
WHERE dayDT = @inputDate
FOR XML PATH('daysFixed'), ELEMENTS, TYPE, ROOT('root')
END
非常感谢Mike的任何帮助。
答案 0 :(得分:8)
你可以这样做;)
ALTER PROCEDURE [dbo].[FetchDays]
@inputDate datetime
AS
BEGIN
SET NOCOUNT ON;
SELECT dateID,
dayDT,
countries,
regions
FROM DaysDT
WHERE
DAY(dayDT) = DAY(@inputDate) --Extract and compare day
AND MONTH(dayDT) = MONTH(@inputDate) --Extract and compare month
FOR XML PATH('daysFixed'), ELEMENTS, TYPE, ROOT('root')
END
答案 1 :(得分:2)
试试这个:
WHERE datepart(day, dayDT) = datepart(day,@inputDate)
AND datepart(month, dayDT) = datepart(month,@inputDate)
这将比较整个日期的日期和月份部分,而不检查年份。
答案 2 :(得分:0)
过去我一直需要这种类型的要求。我已经使用了这个解决方案,它按我的意愿对我有用。
SELECT * FROM yourTableName
WHERE DATE_FORMAT(yourColumnName, '%m-%d') = DATE_FORMAT('yourValue', '%m-%d') and yourOtherCondition;