提问人:Krittapat Somsiri 提问时间:11/17/2023 最后编辑:T NKrittapat Somsiri 更新时间:11/20/2023 访问量:81
如果当前日期在 SQL 中为 1 月,如何检索去年的 12 月 [重复]
How to retrieve December of last year if current date is January in SQL [duplicate]
问:
如果当前日期是 2024 年 1 月,我想查询 上个月是 2023 年 12 月。我不确定如何调整查询 在 where 语句中。
有人可以为我提供帮助吗? 谢谢你的优势。
where year(cm.ENTRY_DATE) = YEAR(GETDATE())
and month(cm.ENTRY_DATE) = MONTH(DATEADD(month, -1, GETDATE()))
这是完整的查询:
Select
distinct
a.POLICY_NO,
c.CLAIM_NO,
c.ENTRY_DATE,
c.LOSS_DATE,
c.LOSS_TIME,
c.LOSS_DESC_CODE,
c.LOSS_DESCRIPTION,
c.CLAIM_STATUS,
c.CLAIM_TYPE,
c.PERSON_ENTRY_CODE,
(
select
p.person_full_name
from
center_setup.dbo.setup_person_name_master p
where
p.person_short_name = c.person_entry_code
) as Person_Name,
c.loss_place_name
from
(
select
cm.policy_no,
COUNT(cm1.claim_no) as Count_,
cm.LOSS_DATE,
cm.ENTRY_DATE,
cm.LOSS_DESC_CODE
from
cosl_master cm
inner join cosl_master cm1 on cm.POLICY_NO = cm1.POLICY_NO
and cm.loss_date = cm1.loss_date
and cm.loss_desc_code = cm1.LOSS_DESC_CODE
and cm1.CLAIM_STATUS <> 'I'
where year(cm.ENTRY_DATE) = YEAR(GETDATE())
and month(cm.ENTRY_DATE) = MONTH(DATEADD(month, -1, GETDATE()))
and cm.claim_status in ('O', 'R')
and cm.CLAIM_STATUS <> 'I'
group by
cm.claim_no,
cm.policy_no,
cm.LOSS_DATE,
cm.ENTRY_DATE,
cm.LOSS_DESC_CODE
having
COUNT(cm1.claim_no) > 1
) A
left join COSL_MASTER c on A.POLICY_NO = c.POLICY_NO
and c.CLAIM_STATUS <> 'I'
and a.LOSS_DATE = c.LOSS_DATE
and c.LOSS_DESC_CODE = a.LOSS_DESC_CODE
order by
a.policy_no asc
答:
1赞
tinazmu
11/17/2023
#1
如果您想要“上个月”:
WHERE cm.ENTRY_DATE between
DATEADD(DAY, 1, EOMONTH(GETDATE(), -2))
AND
EOMONTH(GETDATE(), -1)
如果您想要“上一年”的 12 月:
WHERE cm.ENTRY_DATE between
DATEFROMPARTS(YEAR(GETDATE())-1, 12, 1)
AND
DATEFROMPARTS(YEAR(GETDATE())-1, 12, 31)
EOMONTH:返回给定日期(在本例中为日期时间,因此它也方便地删除了 GETDATE() 的时间部分)的最后一天。
DATEFORMPARTS 从给定的年、月、日部分“构建”日期值;如果你对 12 月的月份感兴趣,月份和日期是常数,那么年份只是从当前年份 --1 中取出。
评论
YEAR()
MONTH()
@startOfLastMonth
= DATEADD(month, -1, @startOfCurrentMonth)
cm.ENTRY_DATE >= @startOfLastMonth AND cm.ENTRY_DATE < @startOfCurrentMonth
<
<=
BETWEEN