我要在数据库中查询昨天和上月最后一天的数据,在网上找例子,解决如下
String sLastTime="";
if(bMonth){
sLastTime = " AND DATEADD(Day,-1,CONVERT(varchar(8),'"2021-09-02"',120)+'01') = 数据库时间字段"; //上月最后一天
}else{
sLastTime = " AND DATEADD(DAY,-1,'"2021-09-02"')=数据库时间字段"; //昨天
}
String sql = " SELECT * FROM tableName WHERE 1=1 " + sLastTime ;
以下是我参考网上的例子:
前言:
在实际工作中,经常遇到求一些特殊时间的提取数据要求。
其中一个需求,要求某时间字段,所获取数据的时间都是每个月的最后一天。
一、以下举例说明:
只取每个月末最后一天的数据,即表格中标为红色的数据:20180831/20180630/20180228这三天的数据。
1、建表语句:
create TABLE [dbo].[test_ceshi](
[statdate] [varchar](8) NULL,
[Value_id] [decimal](20, 4) NULL,
[Value_name] [varchar](10) NULL
)
2、插入数据:
insert into [test_ceshi] values ('20180808',1000,'Test1')
insert into [test_ceshi] values ('20180824',2000,'Test2')
insert into [test_ceshi] values ('20180831',3000,'Test3')
insert into [test_ceshi] values ('20180730',4000,'Test4')
insert into [test_ceshi] values ('20180630',5000,'Test5')
insert into [test_ceshi] values ('20180228',6000,'Test6')
使用以下SQL语句即可查询所需要的数据:
select * from test_ceshi a where a.statdate in
(select convert(varchar(8),DATEADD(Day,-1,CONVERT(varchar(8),DATEADD(Month,1,statdate),120)+'01'),112)
from test_ceshi)
此语句使用了函数dateadd和convert时间函数
DATEADD(Month,1,statdate)
----将时间增加一个月 20180808---->20180908
CONVERT(varchar(8),DATEADD(Month,1,statdate),120)
----将得到时间20180908转化格式120并截断8位,得到字符串结果:'2018-09-'
CONVERT(varchar(8),DATEADD(Month,1,statdate),120)+'01'
----将字符串结果:'2018-09-'加上01,得到字符串结果:'2018-09-01'
DATEADD(Day,-1,CONVERT(varchar(8),DATEADD(Month,1,statdate),120)+'01')
----将字符串’2018-09-01’转化成时间格式并减去一天,变成2018-08-31
convert(varchar(8),DATEADD(Day,-1,CONVERT(varchar(8),DATEADD(Month,1,statdate),120)+'01'),112)
----将时间格式的2018-08-31,转化为112格式的字符串20180831
补充一个自定义的函数,可以直接拿过用:
CREATE FUNCTION dbo.function_test_ceshi(@statdate_into varchar(8))
RETURNS varchar(8) --返回返回值的数据类型
AS
BEGIN
declare @statdate_result varchar(8)
select @statdate_result =convert(varchar(8),DATEADD(Day,-1,CONVERT(varchar(8),DATEADD(Month,1,@statdate_into),120)+'01'),112)
RETURN @statdate_result
END
测试结果:
版权声明:本文为优快云博主「蓝星部队」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/lanxingbudui/article/details/81702708