sql 如何判断某个日期是否在这个月内

比如,日期a1:2013-12-02如何判断该日期不是在这个月(2014-01-01——2014-01-31)内的。我不是查询表的,,是根据当前时间获取这个月的第一天和最... 比如,日期a1:2013-12-02
如何判断该日期不是在这个月(2014-01-01——2014-01-31)内的。
我不是查询表的,,是根据当前时间获取这个月的第一天和最後一天,然後拿日期a1作比较,谢谢
展开
 我来答
小狂中E
2014-01-21 · TA获得超过1418个赞
知道大有可为答主
回答量:1514
采纳率:66%
帮助的人:1024万
展开全部
with t1(d) as (
    select cast('2013-12-02' as datetime)
    union all select cast('2014-1-10' as datetime)
    ),
t2(d) as (
    select dateadd(mm, datediff(mm, 0, getdate()), 0)
    )  --月初
select t1.* 
from t1 join t2 on t1.d between t2.d and t2.d+31-day(t2.d+31)  --月初到月末
时针楼
推荐于2018-05-15 · 采风人文,以观当世。幽发己见
时针楼
采纳数:81 获赞数:235

向TA提问 私信TA
展开全部
SELECT DATEADD(mm, DATEDIFF(mm, 0, GETDATE()), 0) AS 这个月第一天
SELECT DATEADD(d, - 1, DATEADD(mm, DATEDIFF(mm, 0, GETDATE())+1, 0)) AS 这个月最后一天

sql server 的写法
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tim_spac
2014-01-21 · TA获得超过3628个赞
知道大有可为答主
回答量:1804
采纳率:100%
帮助的人:2011万
展开全部
declare @a1 datetime
set @a1 = '2013-12-02'

-- for M$SQL
declare @now datetime
declare @month_bgn datetime, @month_end datetime

set @now = getdate()
-- 这个月的第一天
set @month_bgn = dateadd(month, datediff(month, 0, getdate()), 0) 
-- 这个月的最後一天
set @month_end = dateadd(ms, -3, dateadd(month, 1, @month_bgn))

-- 然後拿日期a1作比较
if @a1 between @month_bgn and @month_end
begin
    print 'Between'
end
else
begin
    print 'Out of range'
end
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友0951d78
2014-01-21 · TA获得超过1451个赞
知道小有建树答主
回答量:1727
采纳率:0%
帮助的人:1265万
展开全部
a1>2014-01-31 or a1 < 2014-01-01 不就不在这个月?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sun_rain_ice
2014-01-21 · TA获得超过1419个赞
知道小有建树答主
回答量:1286
采纳率:0%
帮助的人:1040万
展开全部
直接between这两个日期就可以了
追问
我不是查询表的,,是根据当前时间获取这个月的第一天和最後一天,然後拿日期a1作比较,谢谢
追答
我的意思就是这个。。。where exist (select 1 where a1 between date1 and date2)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式