1. oracle sql 查询上一月月初到月末的数据
select * from 表名 where to_char(日期列,'yyyy-mm')=to_char(add_months(sysdate,-1),'yyyy-mm')
2. sql如何取某年某月的第一天和最后一天
SELECT CAST((LEFT('20093',4)+'-'+SUBSTRING('20093',5,LEN('20093'))+'-'+'01') AS DATETIME)--第一天
SELECT DATEADD(DAY,-1,DATEADD(MONTH,1,CAST((LEFT('20093',4)+'-'+SUBSTRING('20093',5,LEN('20093'))+'-'+'01') AS DATETIME)))--最后一天
原理:第一天肯定是1号拉,最后一天是下个月第一天减一天。
本月第一天
SELECT dateadd(ms,-1,DATEADD(mm, DATEDIFF(m,0,getdate()), 0)) as mouthlastdate
下月第一天:
SELECT dateadd(ms,-1,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0)) as mouthlastdate
下下月第一天:
SELECT dateadd(ms,-1,DATEADD(mm, DATEDIFF(m,0,getdate())+2, 0)) as mouthlastdate
(2)sql求月初扩展阅读
sqlserver 时间格式函数详细
--getdate 获取当前时间
select getdate()
--dateadd 原有时间加: 2013-02-17 13:20:16 此时间加12个月
select dateadd(MONTH,12,'2013-02-17 13:20:16') --返回:2014-02-17 13:20:16.000 (参数month可以改为 day,year等日期加相应的值)
--datediff 两个时间的差 (后面-前面=返回值)
select datediff(day,'2013-02-01','2013-02-18') --返回:17 (参数day可以改为 month,year等日期加相应的值)
--datepart 获取日期的某个部分整数
select DATEPART(month, '2013-2-17') --返回 2 (参数month可以改为 day,year等日期加相应的值)
--datename 获取指定部位的字符串
select datename(weekday, '2013-2-17') --返回 星期日 (参数weekday可以改为 day,year等日期加相应的值)
--day(), month(),year() 获取指定部位的字符串
select day('2013-2-15') --返回15
3. SQL中有什么函数自动获取每月月初
Oracle取得本周,本月,本季,本年的第一天和最后一天
--本周
select trunc(sysdate,'d')+1 from al;
select trunc(sysdate,'d')+7 from al;
--本月
select trunc(sysdate,'mm') from al;
select last_day(trunc(sysdate)) from al;
--本季
select trunc(sysdate,'Q') from al;
select add_months(trunc(sysdate,'Q'),3)-1 from al;
--本年
select trunc(sysdate,'yyyy') from al;
select add_months(trunc(sysdate,'yyyy'),12)-1 from al;
4. oracle 统计本月月初到当前时间的sql条件应该是什么样的
你首先要确定你的环境变量里日期格式是什么样的,是yyyy/mm/dd还是yyyy-mm-dd,然后把两个格式化成一种就可以了,而且也不需要to_char。对于你的问题最简单的改法就是between to_char(trunc(sysdate,'MM'),'yyyymmdd') and '20150601' 但不是最好的写法
5. sql server 2005 求去年同期当月第一天和当月最后一天
DECLARE @TestDATETIME
SELECT @Test = DATEADD(YEAR, -1, GETDATE())
--这已经是得出去年同期的时间。
剩下的思路是,格式化@Test,取年份和月份,再指定日为第一天
例如 2012-4-1,这样就得出第一天
再用这个加一个月 DATEADD(MONTH, 1, CONVERT(DATETIME, '2012-4-1'))
就会得出 2012-5-1,再减一天 DATEADD(DAY, -1, '2012-5-1')
我这里没有装 SQL Server,具体不能帮你写完,你试一下
6. sql ,求所月项目的月初现金余额,如何用sql实现
因为之前没有仔细理解你的问题,后来发现你的原本意图并未交代清楚,所以我收回之前的答案。如果需要我解决你的问题的话,请向我发追问,只要搞清楚了你的意图,肯定能给出正确答案。
根据用网络消息向提问者了解后,现在已经弄清楚问题的实质意图为:
找到那张表里每个月,各个项目下日期最小的那条记录,然后输出该条记录之(余额+付-收)的计算值
表情况说明:
1.余额、付、收的数据类型是数字
2.日期是文本
3.如果科目相同的情况下,不会出现多个相同最小日期的情况
4.表内存储多个月的记录(不含年份)
为了避免SQL过于复杂,请确保:
A.余额、付、收这三个字段的必填字段属性为“是”,确保没有空值存在;
B.日期字段值必须严格按照:两位月份/两位日期(例如:01/06) 格式录入;
C.请为科目和日期这两个字段添加唯一聚合索引,以避免同科目有多个相同日期的情况发
生。
SQL代码如下:
SELECT 表.科目, 表.余额+表.付-表.收 AS 月初现金余额, 表.日期
FROM 表 INNER JOIN (SELECT DISTINCT MIN(日期) AS D FROM 表
GROUP BY 科目,LEFT(日期,2))a ON 表.日期=a.D
ORDER BY 表.日期, 表.科目;
运行上列代码,得到下列结果:
科目 月初现金余额 日期
A 800 01/05
B 100 01/06
7. pl/sql 怎么提取指点时间的月初第一天
declare
rt_end Date;
rt_first varchar(20);
begin
rt_end:=to_date('2012-02-14','yyyy-mm-dd');
rt_first:=to_char(rt_end,'yyyy-mm')||'-01';
dbms_output.put_line(rt_first);
end;
/
我不清楚你的题目是要求什么的,所以也不知要怎么做,只能做这些。
希望这个对你有帮助!
8. sql 语句 怎么获取指定月的第一天和最后一天
first_day()得到一个月中的第一天:如first_day(to_date('2008-5-22','yyyy-mm-dd')) 结果:2008-5-1
last_day()得到一个月最后的一天:如:last_day(to_date('2008-5-22','yyyy-mm-dd')) 结果:2008-5-31 ;
9. 怎么用sql语句查找从月初到月末的数据
要找出月初到月末的数据,那只要找出本月范围即可,SQL提供了DateDiff来解决这个问题:
DateDiff 函数:返回两个日期之间的时间间隔。
语法
DateDiff(interval, date1, date2 [,firstdayofweek[, firstweekofyear]])
示例如下:
select * from table where datediff(month,getdate(), date_colName)=0
如果当前日期getdate() 和表中的字段date_colName 相等,即为本月。