sql查询本日本周本月本年的语句
SQLServer查询今天-昨天-本周-本月的记录
![SQLServer查询今天-昨天-本周-本月的记录](https://img.taocdn.com/s3/m/b87e41f7bb4cf7ec4afed084.png)
在统计的时候,经常会使用SQL查询今天、昨天、本月、本周的记录,我将这些常用的sql语句写在这里。
SQL查询今天的记录:datediff(day,[Datetime],getdate())=0 把Datetime换为你的相应字段;SQL查询昨天的记录:datediff(day,[Datetime],getdate())=1 把Datetime换为你的相应字段,getdate()-Datetime即为时间差。
本月记录:SELECT * FROM 表WHERE datediff(month,[dateadd],getdate())=0 本周记录:SELECT * FROM 表WHERE datediff(week,[dateadd],getdate())=0本日记录:SELECT * FROM 表WHERE datediff(day,[dateadd],getdate())=0GetDate函数的使用方法函数参数/功能GetDate( ) 返回系统目前的日期与时间DateDiff (interval,date1,date2) 以interval 指定的方式,返回date2 与date1两个日期之间的差值date2-date1DateAdd (interval,number,date) 以interval指定的方式,加上number之后的日期DatePart (interval,date) 返回日期date中,interval指定部分所对应的整数值DateName (interval,date) 返回日期date中,interval指定部分所对应的字符串名称更多信息请查看IT技术专栏。
sql 查询当天的记录,本月,本周的记录
![sql 查询当天的记录,本月,本周的记录](https://img.taocdn.com/s3/m/bdef6b6758fafab069dc02ff.png)
sql 查询当天的记录,本月,本周的记录2010-09-07 00:27:14| 分类:默认分类| 标签:getdate datediff select interval返回字号:大中小订阅sql 查询当天的记录,本月,本周的记录sql 查询当天的记录,本月,本周的记录2006年12月27日星期三上午10:05SELECT * FROM 表WHERE CONVERT(Nvarchar, dateandtime, 111) = CONVERT(Nvarchar, GETDATE(), 111) ORDER BY dateandtime DESC本月记录SELECT * FROM 表WHEREdatediff(month,[dateadd],getdate())=0本周记录当天记录SELECT * FROM 表WHEREdatediff(day,[dateadd],getdate())=0sql server中的时间函数1. 当前系统日期、时间select getdate()2. dateadd 在向指定日期加上一段时间的基础上,返回新的datetime 值例如:向日期加上2天select dateadd(day,2,'2004-10-15') --返回:2004-10-17 00:00:00.0003. datediff 返回跨两个指定日期的日期和时间边界数。
select datediff(day,'2004-09-01','2004-09-18') --返回:174. datepart 返回代表指定日期的指定日期部分的整数。
SELECT DATEPART(month, '2004-10-15') --返回105. datename 返回代表指定日期的指定日期部分的字符串SELECT datename(weekday, '2004-10-15') --返回:星期五6. day(), month(),year() --可以与datepart对照一下select 当前日期=convert(varchar(10),getdate(),120),当前时间=convert(varchar(8),getdate(),114)select datename(dw,'2004-10-15')select 本年第多少周=datename(week,'2004-10-15') ,今天是周几=datename(weekday,'2004-10-15')函数参数/功能GetDate( ) 返回系统目前的日期与时间DateDiff (interval,date1,date2) 以interval 指定的方式,返回date2 与date1两个日期之间的差值date2-date1DateAdd (interval,number,date) 以interval指定的方式,加上number之后的日期DatePart (interval,date) 返回日期date中,interval指定部分所对应的整数值DateName (interval,date) 返回日期date中,interval指定部分所对应的字符串名称参数interval的设定值如下:值缩写(Sql Server)Access 和ASP 说明Year Yy yyyy 年1753 ~ 9999 Quarter Qq q 季1 ~ 4 Month Mm m 月1 ~ 12Day of year Dy y 一年的日数,一年中的第几日1-366Day Dd d 日,1-31Weekday Dw w 一周的日数,一周中的第几日1-7Week Wk ww 周,一年中的第几周0 ~ 51Hour Hh h 时0 ~ 23Minute Mi n 分钟0 ~ 59Second Ss s 秒0 ~ 59Millisecond Ms - 毫秒0 ~ 999access 和asp 中用date()和now()取得系统日期时间;其中DateDiff,DateAdd,DatePart也同是能用于Access和asp中,这些函数的用法也类似举例:1.GetDate() 用于sql server :select GetDate()2.DateDiff('s','2005-07-20','2005-7-25 22:56:32')返回值为514592 秒DateDiff('d','2005-07-20','2005-7-25 22:56:32')返回值为5 天3.DatePart('w','2005-7-25 22:56:32')返回值为2 即星期一(周日为1,周六为7)DatePart('d','2005-7-25 22:56:32')返回值为25即25号DatePart('y','2005-7-25 22:56:32')返回值为206即这一年中第206天DatePart('yyyy','2005-7-25 22:56:32')返回值为2005即2005年SQL 查询当天,本月,本周的记录SELECT * FROM 表WHERE CONVERT(Nvarchar, dateandtime, 111) = CONVERT(Nvarchar, GETDATE (), 111) ORDER BY dateandtime DESC本月记录SELECT * FROM 表WHERE datediff(month,[dateadd],getdate())=0本周记录SELECT * FROM 表WHERE datediff(week,[dateadd],getdate())=0当天记录SELECT * FROM 表WHERE datediff(day,[dateadd],getdate())=0sql server中的时间函数1. 当前系统日期、时间select getdate()2. dateadd 在向指定日期加上一段时间的基础上,返回新的datetime 值例如:向日期加上2天select dateadd(day,2,'2004-10-15') --返回:2004-10-17 00:00:00.0003. datediff 返回跨两个指定日期的日期和时间边界数。
使用SQL语句查询日期(当月天数,当月第一天,当月最后一天,本年最后一天,当月第一个星期)。。。
![使用SQL语句查询日期(当月天数,当月第一天,当月最后一天,本年最后一天,当月第一个星期)。。。](https://img.taocdn.com/s3/m/fc08b8325627a5e9856a561252d380eb62942303.png)
使⽤SQL语句查询⽇期(当⽉天数,当⽉第⼀天,当⽉最后⼀天,本年最后⼀天,当⽉第⼀个星期)。
取某⽉天数:select day(dateadd(month,1,'2012-02-01')-1)--当⽉天数select day(dateadd(ms,-3,DATEADD(m, DATEDIFF(m,0,getdate())+1,0)))---当⽉第⼀天select dateadd(d,-day(getdate())+1,getdate())---当⽉最后⼀天select dateadd(d,-1,dateadd(m,1,dateadd(d,-day(getdate())+1,getdate()) ))--本年最后⼀天select dateadd(d,-day(getdate()),dateadd(m,12,getdate()))--当⽉第⼀个星期⼀SELECT DATEADD(wk, DATEDIFF(wk, '', DATEADD(dd, 6 - DAY(getdate()), getdate())), '')SQL Server ⽇期算法:本⽉的第⼀天:select dateadd(mm,datediff(mm,0,getdate()),0)本周的星期⼀:select dateadd(wk,datediff(wk,0,getdate()),0)⼀年的第⼀天:select DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)季度的第⼀天:SELECT DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)当天的零时:SELECT DATEADD(dd, DATEDIFF(dd,0,getdate()), 0)上个⽉的最后⼀天:本⽉第⼀天减2ms.SELECT dateadd(ms,-2,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0))本⽉的最后⼀天:SELECT dateadd(ms,-2,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))本⽉的第⼀个星期⼀去掉时分秒:DATEADD(day, DATEDIFF(day,0,getdate()), 0)显⽰星期⼏:select datename(weekday,getdate())如何取得某个⽉的天数:SELECT Day(dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0)))判断是否闰年:SELECT caseday(dateadd(mm, 2, dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)))) when28then'平年'else'闰年'end⼀个季度多少天:declare@mtinyint,@timesmalldatetimeselect@m=month(getdate()) select @m=case when @mbetween 1 and 3 then 1 when @m between 4 and 6 then 4 when @m between 7 and 9 then 7else10 endselect @time=datename(year,getdate())+ --A. 季度的第⼀天SELECT CONVERT(datetime, CONVERT(char(8), DATEADD(Month, DATEPART(Quarter,@dt)*3-Month(@dt)-2, @dt),120)+'1')--B. 季度的最后⼀天(CASE判断法)SELECT CONVERT(datetime,CONVERT(char(8),DATEADD(Month, DATEPART(Quarter,@dt)*3-Month(@dt), @dt),120) +CASE WHEN DATEPART(Quarter,@dt) in(1,4) THEN '31'ELSE '30' END)--C. 季度的最后⼀天(直接推算法)SELECT DATEADD(Day,-1,CONVERT(char(8),DATEADD(Month,1+DATEPART(Quarter,@dt)*3-Month(@dt), @dt),120)+'1')⼀、sql server⽇期时间函数1. 当前系统⽇期、时间select getdate()2. dateadd 在向指定⽇期加上⼀段时间的基础上,返回新的 datetime 值例如:向⽇期加上2天select dateadd(day,2,'2004-10-15') --返回:2004-10-1700:00:00.0003. datediff 返回跨两个指定⽇期的⽇期和时间边界数select datediff(day,'2004-09-01','2004-09-18') --返回:174. datepart 返回代表指定⽇期的指定⽇期部分的整数。
sql 日期的计算方法
![sql 日期的计算方法](https://img.taocdn.com/s3/m/6ab047e8e009581b6bd9ebff.png)
--B. 年的最后一天
SELECT CONVERT(char(5),@dt,120)+'12-31'
--2.指定日期所在季度的第一天或最后一天
--A. 季度的第一天
SELECT CONVERT(datetime,
SELECT CONVERT(datetime,
CONVERT(char(8),
DATEADD(Month,
DATEPART(Quarter,@dt)*3-Month(@dt),
@dt),
120)
+CASE WHEN DATEPART(Quarter,@dt) in(1,4)
THEN '31'ELSE '30' END)
--C. 季度的最后一天(直接推算法)
SELECT DATEADD(Day,-1,
CONVERT(char(8),
DATEADD(Month,
--B. 星期一做为一周的第1天
SELECT DATEADD(Day,@number-(DATEPART(Weekday,@dt)+@@DATEFIRST-2)%7-1,@dt)
--4.指定日期所在周的任意一天
SELECT DATEADD(Day,@number-DATEPART(Weekday,@dt),@dt)
--5.指定日期所在周的任意星期几
--A. 星期天做为一周的第1天
SELECT DATEADD(Day,@number-(DATEPART(Weekday,@dt)+@@DATEFIRST-1)%7,@dt)
sql语句获取今天、昨天、近7天、本周、上周、本月、上月、半年数据
![sql语句获取今天、昨天、近7天、本周、上周、本月、上月、半年数据](https://img.taocdn.com/s3/m/42e78c41ac02de80d4d8d15abe23482fb4da02ef.png)
sql语句获取今天、昨天、近7天、本周、上周、本⽉、上⽉、半年数据01话说有⼀⽂章表article,存储⽂章的添加⽂章的时间是add_time字段,该字段为int(5)类型的,现需要查询今天添加的⽂章总数并且按照时间从⼤到⼩排序,则查询语句如下:02031select * from `article` where date_format(from_UNIXTIME(`add_time`),'%Y-%m-%d') = date_format(now(),'%Y-%m-%d');04或者:05061select * from `article` where to_days(date_format(from_UNIXTIME(`add_time`),'%Y-%m-%d')) = to_days(now());07假设以上表的add_time字段的存储类型是DATETIME类型或者TIMESTAMP类型,则查询语句也可按如下写法:0809查询今天的信息记录:10111select * from `article` where to_days(`add_time`) = to_days(now());12查询昨天的信息记录:13141select * from `article` where to_days(now()) – to_days(`add_time`) <= 1;15查询近7天的信息记录:16171select * from `article` where date_sub(curdate(), INTERVAL 7 DAY) <= date(`add_time`);18查询近30天的信息记录:19201select * from `article` where date_sub(curdate(), INTERVAL 30 DAY) <= date(`add_time`);21查询本⽉的信息记录:22231select * from `article` where date_format(`add_time`, ‘%Y%m') = date_format(curdate() , ‘%Y%m');24查询上⼀⽉的信息记录:25261select * from `article` where period_diff(date_format(now() , ‘%Y%m') , date_format(`add_time`, ‘%Y%m')) =1;27对上⾯的SQL语句中的⼏个函数做⼀下分析:2829(1)to_days3031就像它的名字⼀样,它是将具体的某⼀个⽇期或时间字符串转换到某⼀天所对应的unix时间戳,如:323301 mysql> select to_days('2010-11-22 14:39:51');3402 +--------------------------------+3503 | to_days('2010-11-22 14:39:51') |3604 +--------------------------------+3705 | 734463 |3806 +--------------------------------+39074008 mysql> select to_days('2010-11-23 14:39:51');4109 +--------------------------------+4210 | to_days('2010-11-23 14:39:51') |4311 +--------------------------------+4412 | 734464 |4513 +--------------------------------+46可以看出22⽇与23⽇的差别就是,转换之后的数增加了1,这个粒度的查询是⽐较粗糙的,有时可能不能满⾜我们的查询要求,那么就需要使⽤细粒度的查询⽅法str_to_date函数了,下⾯将分析这个函数的⽤法。
sql 查询本年、本月、本日记录的语句
![sql 查询本年、本月、本日记录的语句](https://img.taocdn.com/s3/m/7361b82cb4daa58da0114a43.png)
sql 查询本年、本月、本日记录的语句,附SQL日期函数sql 查询本年、本月、本日记录的语句,附SQL日期函数,学习sql的朋友可以参考下。
查询本日记录SELECT * FROM messages WHERE CONVERT(Nvarchar, CreateDate, 111) = CONVERT(Nvarchar, GETDATE(), 111) ORDER BY CreateDate DESCSELECT * FROM 表 WHERE datediff(day,列名,getdate())=0查询本年SELECT count(*) FROM messages WHERE datediff(year,CreateDate,getdate())=0查询本月SELECT count(*) FROM messages WHERE datediff(month,CreateDate,getdate())=0本周记录SELECT * FROM 表名 WHERE datediff(week,列名,getdate())=0SQL 日期函数1. 当前系统日期、时间select getdate()2. dateadd 在向指定日期加上一段时间的基础上,返回新的 datetime 值例如:向日期加上2天select dateadd(day,2,'2004-10-15′) –返回:2004-10-17 00:00:00.0003. datediff 返回跨两个指定日期的日期和时间边界数。
select datediff(day,'2004-09-01′,'2004-09-18′) –返回:174. datepart 返回代表指定日期的指定日期部分的整数。
SELECT DATEPART(month, '2004-10-15′) –返回 105. datename 返回代表指定日期的指定日期部分的字符串SELECT datename(weekday, '2004-10-15′) –返回:星期五6. day(), month(),year() –可以与datepart对照一下select 当前日期=convert(varchar(10),getdate(),120),当前时间=convert(varchar(8),getdate(),114)select datename(dw,'2004-10-15′)select 本年第多少周=datename(week,'2004-10-15′),今天是周几=datename(weekday,'2004-10-15′)函数参数/功能GetDate( ) 返回系统目前的日期与时间DateDiff (interval,date1,date2) 以interval 指定的方式,返回date2 与date1两个日期之间的差值 date2-date1DateAdd (interval,number,date) 以interval指定的方式,加上number之后的日期DatePart (interval,date) 返回日期date中,interval指定部分所对应的整数值DateName (interval,date) 返回日期date中,interval指定部分所对应的字符串名称参数 interval的设定值如下:值缩写(Sql Server) Access 和 ASP 说明Year Yy yyyy 年 1753 ~ 9999Quarter Qq q 季 1 ~ 4Month Mm m 月1 ~ 12Day of year Dy y 一年的日数,一年中的第几日 1-366Day Dd d 日,1-31Weekday Dw w 一周的日数,一周中的第几日 1-7Week Wk ww 周,一年中的第几周 0 ~ 51Hour Hh h 时0 ~ 23Minute Mi n 分钟0 ~ 59Second Ss s 秒 0 ~ 59Millisecond Ms - 毫秒 0 ~ 999access 和asp 中用date()和now()取得系统日期时间;其中DateDiff,DateAdd,DatePart也同是能用于Access和asp中,这些函数的用法也类似举例:1.GetDate() 用于sql server :select GetDate()2.DateDiff('s','2005-07-20′,'2005-7-25 22:56:32′)返回值为 514592 秒DateDiff('d','2005-07-20′,'2005-7-25 22:56:32′)返回值为 5 天3.DatePart('w','2005-7-25 22:56:32′)返回值为 2 即星期一(周日为1,周六为7)DatePart('d','2005-7-25 22:56:32′)返回值为 25即25号DatePart('y','2005-7-25 22:56:32′)返回值为 206即这一年中第206天DatePart('yyyy','2005-7-25 22:56:32′)返回值为 2005即2005年详细出处参考:/article/27562.htm。
SQL语句获取日期
![SQL语句获取日期](https://img.taocdn.com/s3/m/8748eb2cbd64783e09122bf5.png)
SQL语句获取日期核心提示:本教程为大家介绍SQL语句如何获取特定的日期。
SQL语句获取特定日期1.一个月第一天的Select DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)2.本周的星期一Select DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)3.一年的第一天Select DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)4.季度的第一天Select DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)5.当天的半夜Select DATEADD(dd, DATEDIFF(dd,0,getdate()), 0)6.上个月的最后一天Select dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0))7.去年的最后一天Select dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0))8.本月的最后一天Select dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))9.本年的最后一天Select dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0))10.本月的第一个星期一select DATEADD(wk, DATEDIFF(wk,0,dateadd(dd,6-datepart(day,getdate()),getdate())), 0) 返回当前日期和时间通过函数GETDATE(),你可以获得当前的日期和时间。
函数GETDATE()可以用来作为DATEDIME型字段的缺省值。
这对插入记录时保存当时的时间是有用的。
要建立一个表,其中的记录包含有当前的日期和时间,可以添加一个DATETIME型字段,指定其缺省值为函数GETDATE()的返回值,就象这样:Create TABLE site_log (username VARCHAR(40),useractivity VARCHAR(100),entrydate DATETIME DEFAULT GETDATE())转换日期和时间函数GETDATE()的返回值在显示时只显示到秒。
SQL周、日、月、年数据统计
![SQL周、日、月、年数据统计](https://img.taocdn.com/s3/m/5165c169cbaedd3383c4bb4cf7ec4afe04a1b1be.png)
SQL周、⽇、⽉、年数据统计本⽂只是记录在项⽬中⽤到的统计的SQL语句,记⼀笔以防忘了///<summary>///获取统计数据///</summary>///<param name="CKEY">店⾯ckey</param>///<param name="type">统计类型(⽇、周、⽉、年)</param>///<returns></returns>[WebMethod(true)]public static string GetData3(string CKEY, string type){StringBuilder strSql = new StringBuilder();#region SQL语句if (type == "0"){#region⽇strSql.AppendFormat(" WITH WeekDate ");strSql.AppendFormat(" AS ( SELECT DATEADD(d, -DAY(GETDATE()) + 1, GETDATE()) AS riqi ");strSql.AppendFormat(" UNION ALL ");strSql.AppendFormat(" SELECT riqi + 1 FROM WeekDate ");strSql.AppendFormat(" WHERE riqi + 1 <= ( SELECT DATEADD(d, -DAY(GETDATE()), DATEADD(m, 1, GETDATE())) ) ");strSql.AppendFormat(" ) ");strSql.AppendFormat(" SELECT CONVERT(CHAR(8), a.riqi, 112) AS ⽇ ,DAY (CONVERT(CHAR(8), a.riqi, 112)) AS DDay, ");strSql.AppendFormat(" ISNULL(tbB.⽇成交量, 0) AS ⽇成交量 , ");strSql.AppendFormat(" CASE WHEN CONVERT(CHAR(8), a.riqi, 112) > CONVERT(CHAR(8), GETDATE(), 112) ");strSql.AppendFormat(" THEN NULL ");strSql.AppendFormat(" WHEN CONVERT(CHAR(8), a.riqi, 112) <= CONVERT(CHAR(8), GETDATE(), 112) ");strSql.AppendFormat(" THEN ISNULL(tbB.⽇成交量, 0) ");strSql.AppendFormat(" END AS ⽇成交数量 , ");strSql.AppendFormat(" tbB.⽇实收⾦额 , ");strSql.AppendFormat(" CASE WHEN CONVERT(CHAR(8), a.riqi, 112) > CONVERT(CHAR(8), GETDATE(), 112) ");strSql.AppendFormat(" THEN NULL ");strSql.AppendFormat(" WHEN CONVERT(CHAR(8), a.riqi, 112) <= CONVERT(CHAR(8), GETDATE(), 112) ");strSql.AppendFormat(" THEN ISNULL(tbB.⽇实收⾦额, 0) ");strSql.AppendFormat(" END AS ⽇实收⾦额2 ");strSql.AppendFormat(" FROM WeekDate a ");strSql.AppendFormat(" LEFT JOIN ( SELECT ( SELECT COUNT(1) ");strSql.AppendFormat(" FROM dbo.CustomerBase base ");strSql.AppendFormat(" WHERE CKEY = '{0}' ", CKEY);strSql.AppendFormat(" AND " + impomo.TotalConsumptionMon + " > 0 ");strSql.AppendFormat(" AND TargetDate = cus.TargetDate ");strSql.AppendFormat(" ) ⽇成交量 , ");strSql.AppendFormat(" ISNULL(( SELECT SUM(Total) ");strSql.AppendFormat(" FROM ( SELECT SUM(CONVERT(FLOAT, ISNULL(( pc1 + pc2 + pc3 + pc4 + pc5 ), 0))) AS Total "); strSql.AppendFormat(" FROM PaymentContent AS pay ");strSql.AppendFormat(" WHERE PayDate = cus.TargetDate ");strSql.AppendFormat(" AND pay.CKEY = '{0}' ", CKEY);strSql.AppendFormat(" UNION ALL ");strSql.AppendFormat(" SELECT SUM(CONVERT(FLOAT, ISNULL(RecMoney, 0))) AS Total ");strSql.AppendFormat(" FROM dbo.CardRecharge8 AS recharge ");strSql.AppendFormat(" WHERE RechargDate = cus.TargetDate ");strSql.AppendFormat(" AND recharge.CKEY = '{0}' ", CKEY);strSql.AppendFormat(" UNION ALL ");strSql.AppendFormat(" SELECT SUM(CONVERT(FLOAT, ISNULL(( pc1 + pc2 + pc3 + pc4 + pc5 ), 0))) AS Total ");strSql.AppendFormat(" FROM dbo.PaymentSwimming AS payswim ");strSql.AppendFormat(" WHERE PayDate = cus.TargetDate ");strSql.AppendFormat(" AND payswim.CKEY = '{0}' ", CKEY);strSql.AppendFormat(" UNION ALL ");strSql.AppendFormat(" SELECT SUM(CONVERT(FLOAT, ISNULL(( wp1 + wp2 + wp3 + wp4 + wp5 ), 0))) AS Total "); strSql.AppendFormat(" FROM WarePaymentContent AS ware ");strSql.AppendFormat(" WHERE PayDate = cus.TargetDate ");strSql.AppendFormat(" AND ware.CKEY = '{0}' ", CKEY);strSql.AppendFormat(" ) B ");strSql.AppendFormat(" ), 0) AS ⽇实收⾦额 , ");strSql.AppendFormat(" TargetDate ⽇ ");strSql.AppendFormat(" FROM dbo.CustomerBase cus ");strSql.AppendFormat(" WHERE YEAR(TargetDate) = YEAR(GETDATE()) ");strSql.AppendFormat(" AND MONTH(TargetDate) = MONTH(GETDATE()) ");strSql.AppendFormat(" GROUP BY TargetDate ");strSql.AppendFormat(" ) AS tbB ON CONVERT(CHAR(8), a.riqi, 112) = tbB.⽇ ");#endregion}else if (type == "1"){#region周strSql.AppendFormat(" WITH WeekDate ");strSql.AppendFormat(" AS ( SELECT DATEADD(wk, DATEDIFF(wk, 0, GETDATE()), 0) AS riqi ");strSql.AppendFormat(" UNION ALL ");strSql.AppendFormat(" SELECT riqi + 1 FROM WeekDate ");strSql.AppendFormat(" WHERE riqi + 1 <= ( SELECT DATEADD(wk, DATEDIFF(wk, 0, GETDATE()), 6) ) ");strSql.AppendFormat(" ) ");strSql.AppendFormat(" SELECT CONVERT(CHAR(8), a.riqi, 112) AS ⽇ , ");strSql.AppendFormat(" DATENAME(weekday,CONVERT(CHAR(8), a.riqi, 112)) DDay, ");strSql.AppendFormat(" ISNULL(tbB.⽇成交量, 0) AS ⽇成交量 , ");strSql.AppendFormat(" CASE WHEN CONVERT(CHAR(8), a.riqi, 112) > CONVERT(CHAR(8), GETDATE(), 112) ");strSql.AppendFormat(" THEN NULL ");strSql.AppendFormat(" WHEN CONVERT(CHAR(8), a.riqi, 112) <= CONVERT(CHAR(8), GETDATE(), 112) ");strSql.AppendFormat(" THEN ISNULL(tbB.⽇成交量, 0) ");strSql.AppendFormat(" END AS ⽇成交数量 , ");strSql.AppendFormat(" tbB.⽇实收⾦额 , ");strSql.AppendFormat(" CASE WHEN CONVERT(CHAR(8), a.riqi, 112) > CONVERT(CHAR(8), GETDATE(), 112) ");strSql.AppendFormat(" THEN NULL ");strSql.AppendFormat(" WHEN CONVERT(CHAR(8), a.riqi, 112) <= CONVERT(CHAR(8), GETDATE(), 112) ");strSql.AppendFormat(" THEN ISNULL(tbB.⽇实收⾦额, 0) ");strSql.AppendFormat(" END AS ⽇实收⾦额2 ");strSql.AppendFormat(" FROM WeekDate a ");strSql.AppendFormat(" LEFT JOIN ( SELECT ( SELECT COUNT(1) ");strSql.AppendFormat(" FROM dbo.CustomerBase base ");strSql.AppendFormat(" WHERE CKEY = '{0}'", CKEY);strSql.AppendFormat(" AND " + impomo.TotalConsumptionMon + " > 0 ");strSql.AppendFormat(" AND TargetDate = cus.TargetDate ");strSql.AppendFormat(" ) ⽇成交量 , ");strSql.AppendFormat(" ISNULL(( SELECT SUM(Total) ");strSql.AppendFormat(" FROM ( SELECT SUM(CONVERT(FLOAT, ISNULL(( pc1 + pc2 + pc3 + pc4 + pc5 ), 0))) AS Total "); strSql.AppendFormat(" FROM PaymentContent AS pay ");strSql.AppendFormat(" WHERE PayDate = cus.TargetDate ");strSql.AppendFormat(" AND pay.CKEY = '{0}'", CKEY);strSql.AppendFormat(" UNION ALL ");strSql.AppendFormat(" SELECT SUM(CONVERT(FLOAT, ISNULL(RecMoney, 0))) AS Total ");strSql.AppendFormat(" FROM dbo.CardRecharge8 AS recharge ");strSql.AppendFormat(" WHERE RechargDate = cus.TargetDate ");strSql.AppendFormat(" AND recharge.CKEY = '{0}'", CKEY);strSql.AppendFormat(" UNION ALL ");strSql.AppendFormat(" SELECT SUM(CONVERT(FLOAT, ISNULL(( pc1 + pc2 + pc3 + pc4 + pc5 ), 0))) AS Total ");strSql.AppendFormat(" FROM dbo.PaymentSwimming AS payswim ");strSql.AppendFormat(" WHERE PayDate = cus.TargetDate ");strSql.AppendFormat(" AND payswim.CKEY = '{0}'", CKEY);strSql.AppendFormat(" UNION ALL ");strSql.AppendFormat(" SELECT SUM(CONVERT(FLOAT, ISNULL(( wp1 + wp2 + wp3 + wp4 + wp5 ), 0))) AS Total "); strSql.AppendFormat(" FROM WarePaymentContent AS ware ");strSql.AppendFormat(" WHERE PayDate = cus.TargetDate ");strSql.AppendFormat(" AND ware.CKEY = '{0}'", CKEY);strSql.AppendFormat(" ) B ");strSql.AppendFormat(" ), 0) AS ⽇实收⾦额 , ");strSql.AppendFormat(" TargetDate ⽇ ");strSql.AppendFormat(" FROM dbo.CustomerBase cus ");strSql.AppendFormat(" WHERE DATEPART(wk, TargetDate) = DATEPART(wk, GETDATE()) ");strSql.AppendFormat(" AND DATEPART(yy, TargetDate) = DATEPART(yy, GETDATE()) ");strSql.AppendFormat(" GROUP BY TargetDate ");strSql.AppendFormat(" ) AS tbB ON CONVERT(CHAR(8), a.riqi, 112) = tbB.⽇ ");#endregion}else if (type == "2"){#region⽉strSql.AppendFormat("SELECT YearMonth.⽉ , ");strSql.AppendFormat(" tb.⽉成交量 , ");strSql.AppendFormat(" CASE WHEN YearMonth.⽉ > MONTH(GETDATE()) THEN NULL ");strSql.AppendFormat(" WHEN YearMonth.⽉ <= MONTH(GETDATE()) THEN ISNULL(tb.⽉成交量, 0) ");strSql.AppendFormat(" END AS ⽉成交数量 , ");strSql.AppendFormat(" tb.⽉实收总⾦额 , ");strSql.AppendFormat(" CASE WHEN YearMonth.⽉ > MONTH(GETDATE()) THEN NULL ");strSql.AppendFormat(" WHEN YearMonth.⽉ <= MONTH(GETDATE()) THEN ISNULL(tb.⽉实收总⾦额, 0) ");strSql.AppendFormat(" END AS ⽉实收总⾦额2 ");strSql.AppendFormat(" FROM ( SELECT 1 AS ⽉ UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 ");strSql.AppendFormat(" UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 10 UNION SELECT 11 UNION SELECT 12 ");strSql.AppendFormat(" ) AS YearMonth ");strSql.AppendFormat(" LEFT JOIN ( SELECT ( SELECT COUNT(1) ");strSql.AppendFormat(" FROM dbo.CustomerBase base ");strSql.AppendFormat(" WHERE CKEY = '{0}' ", CKEY);strSql.AppendFormat(" AND " + impomo.TotalConsumptionMon + " > 0 ");strSql.AppendFormat(" AND MONTH(TargetDate) = MONTH(cus.TargetDate) ");strSql.AppendFormat(" ) ⽉成交量 , ");strSql.AppendFormat(" ISNULL(( SELECT SUM(Total) ");strSql.AppendFormat(" FROM ( SELECT SUM(CONVERT(FLOAT, ISNULL(( pc1 + pc2 + pc3 + pc4 + pc5 ), 0))) AS Total ");strSql.AppendFormat(" FROM PaymentContent AS pay ");strSql.AppendFormat(" WHERE MONTH(PayDate) = MONTH(cus.TargetDate) ");strSql.AppendFormat(" AND pay.CKEY = '{0}' ", CKEY);strSql.AppendFormat(" UNION ALL ");strSql.AppendFormat(" SELECT SUM(CONVERT(FLOAT, ISNULL(RecMoney, 0))) AS Total ");strSql.AppendFormat(" FROM dbo.CardRecharge8 AS recharge ");strSql.AppendFormat(" WHERE MONTH(RechargDate) = MONTH(cus.TargetDate) ");strSql.AppendFormat(" AND recharge.CKEY = '{0}' ", CKEY);strSql.AppendFormat(" UNION ALL ");strSql.AppendFormat(" SELECT SUM(CONVERT(FLOAT, ISNULL(( pc1 + pc2 + pc3 + pc4 + pc5 ), 0))) AS Total "); strSql.AppendFormat(" FROM dbo.PaymentSwimming AS payswim ");strSql.AppendFormat(" WHERE MONTH(PayDate) = MONTH(cus.TargetDate) ");strSql.AppendFormat(" AND payswim.CKEY = '{0}' ", CKEY);strSql.AppendFormat(" UNION ALL ");strSql.AppendFormat(" SELECT SUM(CONVERT(FLOAT, ISNULL(( wp1 + wp2 + wp3 + wp4 + wp5 ), 0))) AS Total "); strSql.AppendFormat(" FROM WarePaymentContent AS ware ");strSql.AppendFormat(" WHERE MONTH(PayDate) = MONTH(cus.TargetDate) ");strSql.AppendFormat(" AND ware.CKEY = '{0}' ", CKEY);strSql.AppendFormat(" ) B ");strSql.AppendFormat(" ), 0) AS ⽉实收总⾦额 , ");strSql.AppendFormat(" MONTH(TargetDate) ⽉ ");strSql.AppendFormat(" FROM dbo.CustomerBase cus ");strSql.AppendFormat(" WHERE YEAR(TargetDate) = YEAR(GETDATE()) ");strSql.AppendFormat(" GROUP BY MONTH(cus.TargetDate) ");strSql.AppendFormat(" ) AS tb ON YearMonth.⽉ = tb.⽉ ");#endregion}else if (type == "3"){#region年strSql.AppendFormat("SELECT ( SELECT COUNT(1) ");strSql.AppendFormat(" FROM dbo.CustomerBase base ");strSql.AppendFormat(" WHERE CKEY = '{0}' ", CKEY);strSql.AppendFormat(" AND " + impomo.TotalConsumptionMon + " > 0 ");strSql.AppendFormat(" AND YEAR(TargetDate) = YEAR(cus.TargetDate) ");strSql.AppendFormat(" ) 年成交量 , ");strSql.AppendFormat(" CONVERT(NVARCHAR(20),CONVERT(DECIMAL(18,2),ISNULL(( SELECT SUM(Total) ");strSql.AppendFormat(" FROM ( SELECT SUM(CONVERT(FLOAT, ISNULL(( pc1 + pc2 + pc3 + pc4 + pc5 ), 0))) AS Total ");strSql.AppendFormat(" FROM PaymentContent AS pay ");strSql.AppendFormat(" WHERE YEAR(PayDate) = YEAR(cus.TargetDate) ");strSql.AppendFormat(" AND pay.CKEY = '{0}' ", CKEY);strSql.AppendFormat(" UNION ALL ");strSql.AppendFormat(" SELECT SUM(CONVERT(FLOAT, ISNULL(RecMoney, 0))) AS Total ");strSql.AppendFormat(" FROM dbo.CardRecharge8 AS recharge ");strSql.AppendFormat(" WHERE YEAR(RechargDate) = YEAR(cus.TargetDate) ");strSql.AppendFormat(" AND recharge.CKEY = '{0}' ", CKEY);strSql.AppendFormat(" UNION ALL ");strSql.AppendFormat(" SELECT SUM(CONVERT(FLOAT, ISNULL(( pc1 + pc2 + pc3 + pc4 + pc5 ), 0))) AS Total ");strSql.AppendFormat(" FROM dbo.PaymentSwimming AS payswim ");strSql.AppendFormat(" WHERE YEAR(PayDate) = YEAR(cus.TargetDate) ");strSql.AppendFormat(" AND payswim.CKEY = '{0}' ", CKEY);strSql.AppendFormat(" UNION ALL ");strSql.AppendFormat(" SELECT SUM(CONVERT(FLOAT, ISNULL(( wp1 + wp2 + wp3 + wp4 + wp5 ), 0))) AS Total ");strSql.AppendFormat(" FROM WarePaymentContent AS ware ");strSql.AppendFormat(" WHERE YEAR(PayDate) = YEAR(cus.TargetDate) ");strSql.AppendFormat(" AND ware.CKEY = '{0}' ", CKEY);strSql.AppendFormat(" ) B ");strSql.AppendFormat(" ), 0))) AS 年实收总⾦额 , ");strSql.AppendFormat(" YEAR(TargetDate) 年 ");strSql.AppendFormat(" FROM dbo.CustomerBase cus ");strSql.AppendFormat(" GROUP BY YEAR(TargetDate) ");#endregion}#endregionDataTable table = DBHelper.GetDateTable(strSql.ToString());string rs = Newtonsoft.Json.JsonConvert.SerializeObject(table);return rs;}。
SQL处理各种日期时间
![SQL处理各种日期时间](https://img.taocdn.com/s3/m/b3e0e835a32d7375a41780c1.png)
SQL--本周第一天SELECT DATEADD(Day,1-(DATEPART(Weekday,getdate())+@@DATEFIRST-1)%7,getdate())--orselect dateadd(wk, datediff(wk,0,getdate()), 0)--本周第一天select dateadd(wk, datediff(wk,0,getdate()), 6)--上月第一天SELECTCONVERT(CHAR(10),DATEADD(month,-1,DATEADD(dd,-DAY(GETDATE())+1,GETDATE())),111)--上月最后一天SELECT CONVERT(CHAR(10),DATEADD(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()),0)),111)+' 23:59:59'--本月第一天select dateadd(dd,-datepart(dd,getdate())+1,getdate())--本月最后一天select dateadd(dd,-datepart(dd,getdate()) ,dateadd(mm,1,getdate()))--本月天数select datediff(dd,dateadd(dd,-datepart(dd,getdate())+1,getdate()), dateadd(dd,-datepart(dd,getdate())+1,dateadd(mm,1,getdate())))--orselect datepart(dd,dateadd(dd,-1,dateadd(mm,1,cast(cast(year(getdate()) as varchar)+'-'+cast(month(getdate()) as varchar)+'-01' as datetime))))--下月第一天select dateadd(dd,-datepart(dd,getdate())+1,dateadd(mm,1,getdate()))--下月最后一天SELECT CONVERT(CHAR(10),DATEADD(ms,-3,DATEADD(mm,DATEDIFF(m,0,getdate())+2,0)),111)+' 23:59:59'--季度第一天SELECT DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)--季度最后一天(直接推算法)SELECTDATEADD(Day,-1,CONVERT(char(8),DATEADD(Month,1+DATEPART(Quarter,getdate())*3-Month(g etdate()),getdate()),120)+'1')--季度的最后一天(CASE判断法)select DATEADD(Month,DATEPART(Quarter,getdate())*3-Month(getdate()),getdate())--本月第一个星期一SELECT DATEADD(wk, DATEDIFF(wk, '', DATEADD(dd, 6 - DAY(getdate()), getdate())), '')--去年最后一天SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0))--今年第一天SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)--今年最后一天SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1,0))--指定日期所在周的任意一天SELECT DATEADD(Day,@number-DATEPART(Weekday,@dt),@dt)--5.指定日期所在周的任意星期几--A. 星期天做为一周的第1天SELECT DATEADD(Day,@number-(DATEPART(Weekday,@dt)+@@DATEFIRST-1)%7,@dt)--B. 星期一做为一周的第1天SELECT DATEADD(Day,@number-(DATEPART(Weekday,@dt)+@@DATEFIRST-2)%7-1,@dt)---周内的第几日select datepart(weekday,getdate()) as 周内的第几日--年内的第几周select datepart(week,getdate()) as 年内的第几周--年内的第几季select datepart(quarter,getdate()) as 年内的第几季--判断某天是当月的第几周的sql函数CREATE FUNCTION WeekOfMonth(@day datetime)RETURNS intASbegin----declare @day datetimedeclare @num intdeclare @Start datetimedeclare @dd intdeclare @dayofweek char(8)declare @dayofweek_num char(8)declare @startWeekDays int---set @day='2009-07-05'if datepart(dd,@day)=1return 1elseset @Start= (SELECT DATEADD(mm, DATEDIFF(mm,0,@day), 0)) --一个月第一天的set @dayofweek= (datename(weekday,@Start)) ---得到本月第一天是周几set @dayofweek_num=(select (case @dayofweek when '星期一' then 2when '星期二' then 3when '星期三' then 4when '星期四' then 5when '星期五' then 6when '星期六' then 7when '星期日' then 1end))set @dayofweek_num= 7-@dayofweek_num+1 ---得到本月的第一周一共有几天---print @dayofweek_numset @dd=datepart(dd,@day) ----得到今天是这个月的第几天--print @ddif @dd<=@dayofweek_num --小于前一周的天数return 1elseset @dd=@dd-@dayofweek_numif @dd % 7=0beginset @num=@dd / 7return @num+1endelse --if @dd % 7<>0set @num=@dd / 7set @num=@num+1+1return @numend--常用日期的视图SELECT CONVERT(VARCHAR(10), GETDATE(), 120) AS today, REPLACE(CONVERT(varchar(8), GETDATE(), 108), ':', '') AS time,REPLACE(REPLACE(REPLACE(CONVERT(varchar, GETDATE(), 120), '-', ''), ' ', ''), ':', '') AS all_date, CONVERT(varchar(12), GETDATE(), 112) AS date,YEAR(GETDATE()) AS year, MONTH(GETDATE()) AS month, DAY(GETDATE()) AS day, CONVERT(varchar(8), DATEADD(d, - 1, GETDATE()), 112)AS yestaday, CONVERT(varchar(8), DATEADD(d, 1, GETDATE()), 112) AS tomorrowFROM/*T-SQL: 17 个与日期时间相关的自定义函数(UDF),周日作为周的最后一天,均不受@@DateFirst、语言版本影响提示:(@@Datefirst + datepart(weekday,@Date)) % 7 判断周几是最保险的! 与@@DateFirst 无关,与语言版本无关@@DateFirst 可能会导致datepart(weekday,@Date) 不一样!无论@@DateFirst 等于几,无论是什么语言版本的SQL Server 下面永远恒成立!(@@Datefirst + datepart(weekday,@Date))%7 : 2、3、4、5、6、0、1 分别代表周一到周日-- */create function udf_GetAge(@StartDate datetime,@EndDate datetime)returns integer-- 返回精确年龄select dbo.udf_GetAge('1949-10-01',getdate())beginreturn datediff(year,@StartDate,@EndDate)- case when datediff(day,dateadd(year,datediff(year,@StartDate,@EndDate),@StartDate),@EndDate) >= 0then 0else1endendgocreate function udf_DaysOfYearByDate(@Date datetime)returns integer-- 返回年的天数可判断平(365)、润(366) 年beginreturn datediff(day,dateadd(year,datediff(year,0,@Date),0),dateadd(year,datediff(year,0,@Date) + 1,0))endgocreate function udf_DaysOfYear(@Year integer)returns integer-- 返回年的天数可判断平(365)、润(366) 年beginreturn datediff(day,dateadd(year,@year - year(0),0),dateadd(year,@year - year(0) + 1,0))endgocreate function udf_HalfDay(@Date datetime)returns datetime-- 返回@Date 是上午返回@Date 的零点,@Date 是下午返回@Date 的十二点beginreturn case when datepart(hour,@Date) < 12then dateadd(day,datediff(day,0,@Date),0) --上午归到零点elsedateadd(hour,12,dateadd(day,datediff(day,0,@Date),0)) --下午归到十二点endendgocreate function udf_WeekDiff(@StartDate datetime,@EndDate datetime)returns integer-- 返回[@StartDate , @EndDate] 之间周数周日是当周的最后一天beginreturn datediff(week,@StartDate,@EndDate) -- + 1+ case when (@@Datefirst + datepart(weekday,@StartDate)) % 7 = 1then 1elseend- case when (@@Datefirst + datepart(weekday,@EndDate)) % 7 = 1then 1else 0endendgocreate function udf_WeekOfMonth(@Date datetime)-- 返回@Date 是所在月的第几周周日是当周的最后一天returns integerbeginreturn datediff(week,case when (@@Datefirst + datepart(weekday,dateadd(month,datediff(month,0,@Date),0))) % 7 = 1then dateadd(month,datediff(month,0,@Date),0) - 1elsedateadd(month,datediff(month,0,@Date),0)end,case when (@@Datefirst + datepart(weekday,@Date)) % 7 = 1then @Date-1else @Date)end--流水号编码方式--现实生活中的流水帐号的格式有五花八门,本来主要探讨一种比较普遍的格式2位字符串+4位年月日期+4位递增数字(如MA2009090001),其他格式都不是问题。
SQL语句获取特定日期
![SQL语句获取特定日期](https://img.taocdn.com/s3/m/c86496e9551810a6f524866b.png)
SQL语句获取特定日期1.一个月第一天的Select DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)2.本周的星期一Select DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)3.一年的第一天Select DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)4.季度的第一天Select DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)5.当天的半夜Select DATEADD(dd, DATEDIFF(dd,0,getdate()), 0)6.上个月的最后一天Select dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0))7.去年的最后一天Select dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0))8.本月的最后一天Select dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))9.本年的最后一天Select dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0))10.本月的第一个星期一select DATEADD(wk, DATEDIFF(wk,0,dateadd(dd,6-datepart(day,getdate()),getdate())), 0)返回当前日期和时间通过函数GETDATE(),你可以获得当前的日期和时间。
函数GETDATE()可以用来作为DATEDIME 型字段的缺省值。
这对插入记录时保存当时的时间是有用的。
要建立一个表,其中的记录包含有当前的日期和时间,可以添加一个DATETIME型字段,指定其缺省值为函数GETDATE()的返回值,就象这样:Create TABLE site_log (username VARCHAR(40),useractivity VARCHAR(100),entrydate DATETIME DEFAULT GETDATE())转换日期和时间函数GETDATE()的返回值在显示时只显示到秒。
SQL语句统计每天、每月、每年的数据
![SQL语句统计每天、每月、每年的数据](https://img.taocdn.com/s3/m/8e81cd1e591b6bd97f192279168884868762b8d2.png)
1.//按天统计2.selectcount(dataid) as 每天操作数量, sum()3.from4.where5.group by trunc(createt ime, 'DD'))6.//按自然周统计7.selectto_char(date,'iw'),sum()8.from9.where10.group by to_char(date,'iw')11.//按自然月统计12.selectto_char(date,'mm'),sum()13.from14.where15.group by to_char(date,'mm')16.//按季统计17.selectto_char(date,'q'),sum()18.from19.where20.group by to_char(date,'q')21.//按年统计22.selectto_char(date,'yyyy'),sum()23.from24.where25.group by to_char(date,'yyyy')SQL语句统计每天、每月、每年的数据1、每年selectyear(orderti me) 年,sum(Total) 销售合计from 订单表group by year(orderti me)2、每月selectyear(orderti me) 年,month(orderti me) 月,sum(Total) 销售合计from 订单表group by year(orderti me),month(orderti me3、每日selectyear(orderti me) 年,month(orderti me) 月,day(orderti me) 日,sum(Total) 销售合计from 订单表group by year(orderti me),month(orderti me),day(orderti me)另外每日也可以这样:selectconvert(char(8),orderti me,112) dt,sum(Total) 销售合计from 订单表group by convert(char(8),orderti me,112)sql题如何统计查询一个月中每天的记录怎么写啊?写出来啊!比如说要查2010年3月份每天的记录提问者:Java_Tr avler- 一级最佳答案selectcount(*),substr(t.date,1,10) from table t where t.date like '2010-03%' group by substr(t.date,1,10)这里date的格式是YYY Y-mm-ddhh:mm:sssql数据分月统计,表中只有每天的数据,现在要求求一年中每个月的统计数据(一条sql)SELECTMONTH ( 那个日期的字段),SUM( 需要统计的字段,比如销售额什么的)FROM表WHEREYEAR ( 那个日期的字段) = 2010 -- 这里假设你要查2010年的每月的统计。
mysql查询今天,昨天,本月,今年,本季度,上一年等的sql语句编写(全)
![mysql查询今天,昨天,本月,今年,本季度,上一年等的sql语句编写(全)](https://img.taocdn.com/s3/m/423d225de418964bcf84b9d528ea81c758f52ebe.png)
mysql查询今天,昨天,本⽉,今年,本季度,上⼀年等的sql语句编写(全)-- 今天SELECT 【想要的字段】 FROM 【表名】 WHERETO_DAYS(【时间字段名】) =TO_DAYS(now());-- 昨天SELECT 【想要的字段】 FROM 【表名】 WHERE TO_DAYS( NOW( ) ) - TO_DAYS(【时间字段名】) = 1;-- 近七天SELECT 【想要的字段】 FROM 【表名】 WHERE DATE_SUB(CURDATE(), INTERVAL 7 DAY) <=DATE(【时间字段名】);-- 本周内SELECT 【想要的字段】 FROM 【表名】 WHERE YEARWEEK(DATE_FORMAT(【时间字段名】,'%Y-%m-%d')) = YEARWEEK(now());-- 上⼀周SELECT 【想要的字段】 FROM 【表名】 WHERE YEARWEEK(DATE_FORMAT(【时间字段名】,'%Y-%m-%d')) = YEARWEEK(now())-1;-- 30天内注意这个不是本⽉是从当天起向前推30天SELECT 【想要的字段】 FROM 【表名】 WHERE DATE_SUB(CURDATE(), INTERVAL 30 DAY) <=DATE(【时间字段名】);-- 本⽉SELECT 【想要的字段】 FROM 【表名】 WHERE DATE_FORMAT( 【时间字段名】, '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' );-- 上⼀个⽉SELECT 【想要的字段】 FROM 【表名】 WHERE PERIOD_DIFF( DATE_FORMAT( now( ) , '%Y%m' ) , DATE_FORMAT( 【时间字段名】, '%Y%m' ) ) =1; -- 本季度SELECT 【想要的字段】 FROM 【表名】 WHERE QUARTER(【时间字段名】)=QUARTER(now());-- 上⼀季度SELECT 【想要的字段】 FROM 【表名】 WHERE QUARTER(【时间字段名】)=QUARTER(DATE_SUB(now(),interval 1 QUARTER));-- 本年度SELECT 【想要的字段】 FROM 【表名】 WHERE YEAR(【时间字段名】)=YEAR(NOW());-- 上⼀年度SELECT 【想要的字段】 FROM 【表名】 WHEREYEAR(【时间字段名】)=YEAR(date_sub(now(),interval 1YEAR));下⾯是mysql的函数说明:TO_DAYS() 将⽇期参数返回转换为天,给定⼀个⽇期date,返回⼀个⽇期号码(⾃0年以来的天数)。
报表测试必备时间查询SQL汇总
![报表测试必备时间查询SQL汇总](https://img.taocdn.com/s3/m/28464230ae45b307e87101f69e3143323968f56e.png)
报表测试必备时间查询SQL汇总1、背景背景:测试报表时,经常涉及到不同时间段的数据查询,那么此时我们需借助SQL语句进⼊数据库查询,⽐对界⾯统计的数据是否⼀致。
常⽤的时间段查询有:当天,昨天,近7天,近30天,本⽉,当⽉...等.2、时间查询SQL语句【⼀】查询当天语句语句1:SELECT * FROM 表名 WHERE 时间字段名='当前⽇期';--其中时间字段名即是表中对应存在的时间字段语句2:SELECT * FROM 表名 WHERE to_days(`时间字段名`) = to_days(now());【⼆】查询昨天语句语句1:SELECT * FROM 表名 WHERE 时间字段= '昨天⽇期';语句2:SELECT * FROM 表名 WHERE to_days(now())-to_days(`时间字段`) = 1;【三】查询近7天语句语句1:SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(时间字段) ;【四】查询近30天语句语句1:SELECT * FROM 表名 WHERE DATE_SUB(CURDATE(), INTERVAL 30 DAY) <= date(时间字段名);【五】查询本⽉语句语句1:SELECT * FROM 表名 WHERE DATE_FORMAT( 时间字段名, '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' );【六】查询上个⽉语句语句1:Select * from 表名 where 时间字段名>='上⽉第⼀天⽇期' and 时间字段名<='上⽉最后⼀天⽇期';语句2:Select * from 表名 where 时间字段名 LIKE '2020-05%';【七】查询上周语句语句1:Select * from 表名 where YEARWEEK(date_format(`时间字段名`,'%Y-%m-%d')) = YEARWEEK(now())-1;【⼋】查询截⽌当前本⽉语句语句1:Select * from 表名 where date_format(`时间字段名`, '%Y%m') = date_format(curdate() , '%Y%m');。
SQL语句中的日期查询
![SQL语句中的日期查询](https://img.taocdn.com/s3/m/59734738f011f18583d049649b6648d7c1c70888.png)
SQL语句中的⽇期查询SQL语句中的⽇期查询----YYYY--当前年份第⼀天的前⼀天SELECT TRUNC(SYSDATE,'yyyy') -1+8/24FROM DUAL---2019/12/31 上午 08:00:00--当前年份的第⼀天SELECT TRUNC(SYSDATE,'yyyy') +8/24FROM DUAL---2020/01/01 上午 08:00:00----MM--当前⽉的第⼀天SELECT TRUNC(SYSDATE,'MM') -1+8/24FROM DUAL---2020/04/30 上午 08:00:00--当前⽉的第⼀天的前⼀天SELECT TRUNC(SYSDATE,'MM') +8/24FROM DUAL---2020/05/01 上午 08:00:00----DD--当前⽇的前⼀天SELECT TRUNC(SYSDATE,'DD') -1+8/24FROM DUAL---2020/05/19 上午 08:00:00SELECT TRUNC(SYSDATE) -1+8/24FROM DUAL---2020/5/19 上午 08:00:00--当前⽇SELECT TRUNC(SYSDATE,'DD') +8/24FROM DUAL---2020/05/20 上午 08:00:00SELECT TRUNC(SYSDATE) +8/24FROM DUAL ---2020/5/20 上午 08:00:00----D--当前星期的第⼀天SELECT TRUNC(SYSDATE,'D') FROM DUAL---2020/05/17 当前星期的第⼀天 {是星期⽇哦}----HH--当前的时间,精确到⼩时SELECT TRUNC(SYSDATE,'HH') FROM DUAL---2020/05/20 下午 03:00:00--当前的时间的前⼀⼩时SELECT TRUNC(SYSDATE,'HH')-1/24FROM DUAL---2020/05/20 下午 02:00:00----MI--当前时间,精确到分SELECT TRUNC(SYSDATE,'MI') FROM DUAL---2020/05/20 下午 03:40:00--当前时间前⼀分钟SELECT TRUNC(SYSDATE,'MI') -1/24/60FROM DUAL---2020/05/20 下午 03:39:00。
sql查询本日本周本月本年的语句
![sql查询本日本周本月本年的语句](https://img.taocdn.com/s3/m/9f4f32d2b9f3f90f76c61b53.png)
备注:语法DATEPART(datepart,date)date参数是合法的日期表达式。
datepart参数可以是下列的值:datepart 缩写年yy, yyyy季度qq, q月mm, m年中的日dy, y日dd, d周wk, ww星期dw, w小时hh分钟mi, n秒ss, s毫秒ms微妙mcs纳秒nssql 查询本周本月问题---查询今日信息select * from 表名 where datediff(day,时间字段,getdate())=0 其中day可以换成其他时间函数如month等---求相差天数select datediff(day,'2004-01-01',getdate())--1.一个月第一天的SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)--2.本周的星期一SELECT DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)select dateadd(wk,datediff(wk,0,getdate()),6)--3.一年的第一天SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)--4.季度的第一天SELECT DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)--5.当天的半夜SELECT DATEADD(dd, DATEDIFF(dd,0,getdate()), 0)--6.上个月的最后一天SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0))--7.去年的最后一天SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0))--8.本月的最后一天SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))--9.本年的最后一天SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0) )--10.本月的第一个星期一select DATEADD(wk,DATEDIFF(wk,0,dateadd(dd,6-datepart(day,getdate()),getdate())), 0)--查询本周注册人数select count(*) from [user]where datediff(week,create_day-1,getdate())=0--上周注册人数select count(*) from [user]where datediff(week,create_day-1,getdate())=1--本月注册人数select count(*) from [user]where datediff(month,create_day,getdate())=0--上月注册人数select count(*) from [user]where datediff(month,create_day,getdate())=1--如果要效率,这样写查询--查询本周注册人数select count(*) from [user]where create_day>=dateadd(day,2-datepart(weekday,getdate()),convert (varchar,getdate(),112))and create_day<dateadd(day,9-datepart(weekday,getdate()),convert(va rchar,getdate(),112))--上周注册人数select count(*) from [user]where create_day>=dateadd(day,-5-datepart(weekday,getdate()),conver t(varchar,getdate(),112))and create_day<dateadd(day,2-datepart(weekday,getdate()),convert(va rchar,getdate(),112))--本月注册人数select count(*) from [user]where create_day>=dateadd(day,1-day(getdate()),convert(varchar,getd ate(),112))and create_day<dateadd(month,1,dateadd(day,1-day(getdate()),convert (varchar,getdate(),112)))--上月注册人数select count(*) from [user]where create_day>=dateadd(month,-1,dateadd(day,1-day(getdate()),con vert(varchar,getdate(),112)))and create_day<dateadd(day,1-day(getdate()),convert(varchar,getdate (),112))--本周select count(*) from Userwhere datediff(dd,create_day,getdate()) <= datepart(dw,getdate( ))--上周select count(*) from Userwhere datediff(dd,create_day,(getdate() - datepart(dw,getdate() ))) <= 7--本月select count(*) from Userwhere datepart(mm,create_day) = datepart(mm,getdate())--上月select count(*) from Userwhere datepart(mm,create_day) = datepart(mm,getdate()) - 1 --本周select count(*) from [User]where datediff(dd,create_day,getdate()) <= datepart(dw,getdate( ))--上周select count(*) from [User]where datediff(dd,create_day,(getdate() - datepart(dw,getdate() ))) <= 7--本月select count(*) from [User]where datepart(mm,create_day) = datepart(mm,getdate())--上月select count(*) from [User]where datepart(mm,create_day) = datepart(mm,getdate()) - 1学习month(create_day)=month(getdate())本月month(create_day)=month(getdate())-1 上月补充查询今日所有的SELECT * from feedback WHERE (DATEDIFF(d,fedtime,GETDATE())=0) ORDER BY fedid DESC下面的可能好些,加了判断是不是本年的,上面的本周,本月会把每年的都查出来查询本月的记录select * from tableName where DATEPART(mm, theDate) = DATEPART(mm, GETDATE()) and DATEPART(yy, theDate) = DATEPART(yy, GETDATE())查询本周的记录select * from tableName where DATEPART(wk, theDate) = DATEPART(wk, GETDATE()) and DATEPART(yy, theDate) = DATEPART(yy, GETDATE())查询本季的记录select * from tableName where DATEPART(qq, theDate) = DATEPART(qq, GETDATE()) and DATEPART(yy, theDate) = DATEPART(yy, GETDATE())sql server:--frist dayselect dateadd(dd,-datepart(dd,getdate())+1,getdate())--last dayselect dateadd(dd,-datepart(dd,getdate()) ,dateadd(mm,1,getdate()))--next month first dayselect dateadd(dd,-datepart(dd,getdate())+1,dateadd(mm,1,getdate()))--本月天数select datediff(dd,dateadd(dd,-datepart(dd,getdate())+1,getdate()),dateadd(dd,-datepart(dd,getdate())+1,dateadd(mm,1,getdate())))orselect datepart(dd,dateadd(dd,-1,dateadd(mm,1,cast(cast(year(getdate()) as varchar)+'-'+cast(month(getdate()) as varchar)+'-01' as datetime))))oracle--本月天数select to_number(to_char(last_day(sysdate),'DD')) from dual加法select sysdate,add_months(sysdate,12) from dual; --加1年select sysdate,add_months(sysdate,1) from dual; --加1月select sysdate,to_char(sysdate+7,'yyyy-mm-dd HH24:MI:SS') from dual; --加1星期select sysdate,to_char(sysdate+1,'yyyy-mm-dd HH24:MI:SS') from dual; --加1天select sysdate,to_char(sysdate+1/24,'yyyy-mm-dd HH24:MI:SS') from dual; --加1小时select sysdate,to_char(sysdate+1/24/60,'yyyy-mm-dd HH24:MI:SS') from dual; --加1分钟select sysdate,to_char(sysdate+1/24/60/60,'yyyy-mm-dd HH24:MI:SS') from dual; --加1秒减法select sysdate,add_months(sysdate,-12) from dual; --减1年select sysdate,add_months(sysdate,-1) from dual; --减1月select sysdate,to_char(sysdate-7,'yyyy-mm-dd HH24:MI:SS') from dual; --减1星期select sysdate,to_char(sysdate-1,'yyyy-mm-dd HH24:MI:SS') from dual; --减1天select sysdate,to_char(sysdate-1/24,'yyyy-mm-dd HH24:MI:SS') from dual; --减1小时select sysdate,to_char(sysdate-1/24/60,'yyyy-mm-dd HH24:MI:SS') from dual; --减1分钟select sysdate,to_char(sysdate-1/24/60/60,'yyyy-mm-dd HH24:MI:SS') from dual; --减1秒。
sql语句获取本周、上一周、本月数据
![sql语句获取本周、上一周、本月数据](https://img.taocdn.com/s3/m/5a379523effdc8d376eeaeaad1f34693daef1078.png)
sql语句获取本周、上一周、本月数据 .分类:S QL2005 2010-04-23 16:29 363人阅读评论(0) 收藏举报s ql本周sel ect * from tb w heredated iff(w eek ,时间字段 ,get date()) =0上周sel ect * from tb w heredated iff(w eek ,时间字段 ,get date()) =1下周sel ect * from tb w heredated iff(w eek ,时间字段 ,get date()) =-1------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------上月Sel ect * From Tabl eName Wher e Dat eDiff(mm,DateT imCol, Get Date()) =1 --本月S elect * Fr om Ta bleNa me Wh ere D ateDi ff(mm, Dat eTimC ol, G etDat e())= 0 --下月Sele ct *FromTable NameWhere Date Diff(mm, G etDat e(),DateT imCol ) =1 昨天:datea dd(da y,-1,getda te())明天:datea dd(da y,1,g etdat e())上月:m onth(datea dd(mo nth,-1, g etdat e()))本月:month(getd ate())下月:mont h(dat eadd(month, 1,getda te()))-----------------------------------------------------------------------------------昨天S elect * Fr om Ta bleNa me Wh ere D ateDi ff(dd, Dat eTimC ol, G etDat e())= 1 --明天Sele ct *FromTable NameWhere Date Diff(dd, G etDat e(),DateT imCol) = 1 --最近七天Selec t * F rom T ableN ame W hereDateD iff(d d, Da teTim Col,GetDa te()) <= 7 --随后七天---------------------------------------------------------------------------当前年selec t 提出日期, d atepa rt(ye ar,ge tdate()) a s 当前年 fro m 供方资料表前一年s elect提出日期, da tepar t(yea r,get date())-1as 当前年 fr om 供方资料表后一年selec t 提出日期, d atepa rt(ye ar,ge tdate())+1 as 当前年f rom 供方资料表。
使用sql语句查询日期的方法
![使用sql语句查询日期的方法](https://img.taocdn.com/s3/m/625d3f1be97101f69e3143323968011ca300f764.png)
使用sql语句查询日期的方法使用sql语句查询日期的方法篇一:使用sql语句查询日期使用sql语句查询日期select * from ShopOrder where datediff(week,ordTime,getdate()-1)=0 //查询当天日期在一周年的数据--查询当天:select * from info where DateDiff(dd,datetime,getdate())=0 --查询24小时内的:select * from info where DateDiff(hh,datetime,getDate())<=24--info为表名,datetime为数据库中的字段值--查询当天:select * from info where DateDiff(dd,datetime,getdate())=0 --查询24小时内的:select * from info where DateDiff(hh,datetime,getDate())<=24 --info为表名,datetime为数据库中的字段值Sql代码--查询当天记录另类的方法SELECT *FROM j_GradeShopWHERE (GAddTime BETWEEN CONVERT(datetime, LEFT(GETDATE(), 10) + ' 00:00:00.000')AND CONVERT(datetime, LEFT(GETDATE(), 10) + ' 00:00:00.000') + 1) ORDER BY GAddTime DESC--查询当天记录另类的方法SELECT *FROM j_GradeShopWHERE (GAddTime BETWEEN CONVERT(datetime, LEFT(GETDATE(), 10) + ' 00:00:00.000')AND CONVERT(datetime, LEFT(GETDATE(), 10) + ' 00:00:00.000') + 1) ORDER BY GAddTime DESCDATEDIFF 函数:语法:DATEDIFF ( datepart , startdate , enddate )备注:enddate 减去 startdate。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
备注:语法DATEPART(datepart,date)date参数是合法的日期表达式。
datepart参数可以是下列的值:datepart 缩写年yy, yyyy季度qq, q月mm, m年中的日dy, y日dd, d周wk, ww星期dw, w小时hh分钟mi, n秒ss, s毫秒ms微妙mcs纳秒nssql 查询本周本月问题---查询今日信息select * from 表名 where datediff(day,时间字段,getdate())=0 其中day可以换成其他时间函数如month等---求相差天数select datediff(day,'2004-01-01',getdate())--1.一个月第一天的SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)--2.本周的星期一SELECT DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)select dateadd(wk,datediff(wk,0,getdate()),6)--3.一年的第一天SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)--4.季度的第一天SELECT DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)--5.当天的半夜SELECT DATEADD(dd, DATEDIFF(dd,0,getdate()), 0)--6.上个月的最后一天SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0))--7.去年的最后一天SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0))--8.本月的最后一天SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))--9.本年的最后一天SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0) )--10.本月的第一个星期一select DATEADD(wk,DATEDIFF(wk,0,dateadd(dd,6-datepart(day,getdate()),getdate())), 0)--查询本周注册人数select count(*) from [user]where datediff(week,create_day-1,getdate())=0--上周注册人数select count(*) from [user]where datediff(week,create_day-1,getdate())=1--本月注册人数select count(*) from [user]where datediff(month,create_day,getdate())=0--上月注册人数select count(*) from [user]where datediff(month,create_day,getdate())=1--如果要效率,这样写查询--查询本周注册人数select count(*) from [user]where create_day>=dateadd(day,2-datepart(weekday,getdate()),convert (varchar,getdate(),112))and create_day<dateadd(day,9-datepart(weekday,getdate()),convert(va rchar,getdate(),112))--上周注册人数select count(*) from [user]where create_day>=dateadd(day,-5-datepart(weekday,getdate()),conver t(varchar,getdate(),112))and create_day<dateadd(day,2-datepart(weekday,getdate()),convert(va rchar,getdate(),112))--本月注册人数select count(*) from [user]where create_day>=dateadd(day,1-day(getdate()),convert(varchar,getd ate(),112))and create_day<dateadd(month,1,dateadd(day,1-day(getdate()),convert (varchar,getdate(),112)))--上月注册人数select count(*) from [user]where create_day>=dateadd(month,-1,dateadd(day,1-day(getdate()),con vert(varchar,getdate(),112)))and create_day<dateadd(day,1-day(getdate()),convert(varchar,getdate (),112))--本周select count(*) from Userwhere datediff(dd,create_day,getdate()) <= datepart(dw,getdate( ))--上周select count(*) from Userwhere datediff(dd,create_day,(getdate() - datepart(dw,getdate() ))) <= 7--本月select count(*) from Userwhere datepart(mm,create_day) = datepart(mm,getdate())--上月select count(*) from Userwhere datepart(mm,create_day) = datepart(mm,getdate()) - 1 --本周select count(*) from [User]where datediff(dd,create_day,getdate()) <= datepart(dw,getdate( ))--上周select count(*) from [User]where datediff(dd,create_day,(getdate() - datepart(dw,getdate() ))) <= 7--本月select count(*) from [User]where datepart(mm,create_day) = datepart(mm,getdate())--上月select count(*) from [User]where datepart(mm,create_day) = datepart(mm,getdate()) - 1学习month(create_day)=month(getdate())本月month(create_day)=month(getdate())-1 上月补充查询今日所有的SELECT * from feedback WHERE (DATEDIFF(d,fedtime,GETDATE())=0) ORDER BY fedid DESC下面的可能好些,加了判断是不是本年的,上面的本周,本月会把每年的都查出来查询本月的记录select * from tableName where DATEPART(mm, theDate) = DATEPART(mm, GETDATE()) and DATEPART(yy, theDate) = DATEPART(yy, GETDATE())查询本周的记录select * from tableName where DATEPART(wk, theDate) = DATEPART(wk, GETDATE()) and DATEPART(yy, theDate) = DATEPART(yy, GETDATE())查询本季的记录select * from tableName where DATEPART(qq, theDate) = DATEPART(qq, GETDATE()) and DATEPART(yy, theDate) = DATEPART(yy, GETDATE())sql server:--frist dayselect dateadd(dd,-datepart(dd,getdate())+1,getdate())--last dayselect dateadd(dd,-datepart(dd,getdate()) ,dateadd(mm,1,getdate()))--next month first dayselect dateadd(dd,-datepart(dd,getdate())+1,dateadd(mm,1,getdate()))--本月天数select datediff(dd,dateadd(dd,-datepart(dd,getdate())+1,getdate()),dateadd(dd,-datepart(dd,getdate())+1,dateadd(mm,1,getdate())))orselect datepart(dd,dateadd(dd,-1,dateadd(mm,1,cast(cast(year(getdate()) as varchar)+'-'+cast(month(getdate()) as varchar)+'-01' as datetime))))oracle--本月天数select to_number(to_char(last_day(sysdate),'DD')) from dual加法select sysdate,add_months(sysdate,12) from dual; --加1年select sysdate,add_months(sysdate,1) from dual; --加1月select sysdate,to_char(sysdate+7,'yyyy-mm-dd HH24:MI:SS') from dual; --加1星期select sysdate,to_char(sysdate+1,'yyyy-mm-dd HH24:MI:SS') from dual; --加1天select sysdate,to_char(sysdate+1/24,'yyyy-mm-dd HH24:MI:SS') from dual; --加1小时select sysdate,to_char(sysdate+1/24/60,'yyyy-mm-dd HH24:MI:SS') from dual; --加1分钟select sysdate,to_char(sysdate+1/24/60/60,'yyyy-mm-dd HH24:MI:SS') from dual; --加1秒减法select sysdate,add_months(sysdate,-12) from dual; --减1年select sysdate,add_months(sysdate,-1) from dual; --减1月select sysdate,to_char(sysdate-7,'yyyy-mm-dd HH24:MI:SS') from dual; --减1星期select sysdate,to_char(sysdate-1,'yyyy-mm-dd HH24:MI:SS') from dual; --减1天select sysdate,to_char(sysdate-1/24,'yyyy-mm-dd HH24:MI:SS') from dual; --减1小时select sysdate,to_char(sysdate-1/24/60,'yyyy-mm-dd HH24:MI:SS') from dual; --减1分钟select sysdate,to_char(sysdate-1/24/60/60,'yyyy-mm-dd HH24:MI:SS') from dual; --减1秒。