如:给定的年月格式为20157,代表2015年7月。
取某月第一天:
SELECT CAST((LEFT('20157',4)+'-'+SUBSTRING('20157',5,LEN('20157'))+'-'+'01') AS DATETIME)
结果:
SELECT CONVERT(datetime,CONVERT(char(8),GETDATE(),120)+'1')--这月的第一天
select dateadd(d,-day(getdate()),dateadd(m,1,getdate()))--这月的最后一天
SELECT DATEADD(mm,DATEDIFF(mm,0,dateadd(month,-1,getdate())),0)--上月第一天
select dateadd(ms,-3,DATEADD(mm,DATEDIFF(mm,0,getdate()),0))--上月最后一天
如果是Oracle,可以这样写:
select to_date(to_char(sysdate,'yyyy-mm')||'-01', 'yyyy-mm-dd') from dual;
或者
select add_months(last_day(sysdate)+1,-1) from dual;
再或者:select trunc(sysdate,'month') from dual;
sqlserver可以这样:
select cast(convert(varchar(8),getdate(),23)+'01' as datetime);
看传过来的日期类型是什么类型,才有不同的答案