sql本周
㈠ 使用sql语句查询日期的方法
使用sql语句查询日期的方法
结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。以下是我为大家整理的使用sql语句查询日期的方法,仅供参考,希望能够帮助大家。
使用sql语句查询日期的方法 篇1
使用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_GradeShop
WHERE (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_GradeShop
WHERE (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
DATEDIFF 函数:
语法:
DATEDIFF ( datepart , startdate , enddate )
备注:enddate 减去 startdate。如果 startdate 晚于 enddate,则返回负值。 如果结果超出整数值范围,则 DATEDIFF 将产生错误。对于毫秒,最大数是 24 天 20 小时 31 分钟零 23.647 秒。对于秒,最大数是 68 年。
跨分钟、秒和毫秒等边界计算的方法使得 DATEDIFF 指定的结果在所有数据类型中均一致。结果是带正负号的整数值,它等于跨第一个和第二个日期间的
datepart 边界数。例如,在 1 月 4 日(星期日)和 1 月 11 日(星期日)之间的'星期数是 1。
可以再MSSQL中测试:
Sql代码
--两个时间差刚好是24
--打印的方式
print dateDiff(hh,'2009-1-1 0:0:0','2009-1-2 0:0:0')
--查询的方式
print dateDiff(hh,'2009-1-1 0:0:0','2009-1-2 0:0:0')
--两个时间差刚好是24
--打印的方式
print dateDiff(hh,'2009-1-1 0:0:0','2009-1-2 0:0:0')
--查询的方式
print dateDiff(hh,'2009-1-1 0:0:0','2009-1-2 0:0:0')
Sql代码
--本月记录
SELECT * FROM 表 WHERE datediff(month,[dateadd],getdate())=0
--本周记录
SELECT * FROM 表 WHERE datediff(week,[dateadd],getdate())=0
--包括本年这些查询方式是一样的
--本月记录
SELECT * FROM 表 WHERE datediff(month,[dateadd],getdate())=0
--本周记录
SELECT * FROM 表 WHERE datediff(week,[dateadd],getdate())=0
--包括本年这些查询方式是一样的
sql server中的时间函数
1. 当前系统日期、时间
select getdate()
2. dateadd 在向指定日期加上一段时间的基础上,返回新的 datetime 值 例如:向日期加上2天
select dateadd(day,2,'2004-10-15') --返回:2004-10-17 00:00:00.000
3. datediff 返回跨两个指定日期的日期和时间边界数。
select datediff(day,'2004-09-01','2004-09-18') --返回:17
4. datepart 返回代表指定日期的指定日期部分的整数。
SELECT DATEPART(month, '2004-10-15') --返回 10
5. datename 返回代表指定日期的指定日期部分的字符串
SELECT datename(weekday, '2004-10-15') --返回:星期五
6. day(), month(),year() --可以与datepart对照一下
select 当前日期=convert(var10),getdate(),120)
,当前时间=convert(var8),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-date1
DateAdd (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 ~ 12
Day of year Dy y 一年的日数,一年中的第几日 1-366
Day Dd d 日,1-31
Weekday Dw w 一周的日数,一周中的第几日 1-7
Week Wk ww 周,一年中的第几周 0 ~ 51
Hour Hh h 时0 ~ 23
Minute Mi n 分钟0 ~ 59
Second Ss s 秒 0 ~ 59
Millisecond Ms - 毫秒 0 ~ 999
access 和 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语句查询日期的方法 篇2
datediff(week,zy_time,getdate())=0 //查询本周 datediff(month,zy_time,getdate())=0 //查询本月
本季:select * from table where datediff(qq,C_CALLTIME,getdate())=0
前半年1-6,后半年7-12:select * from table where datepart(mm,C_CALLTIME)/7 = datepart(mm,getdate())/7 1. 当前系统日期、时间 select getdate()
2. dateadd 在向指定日期加上一段时间的基础上,返回新的 datetime 值 例如:向日期加上2天
select dateadd(day,2,'2004-10-15') --返回:2004-10-17 00:00:00.000 3. datediff 返回跨两个指定日期的日期和时间边界数。
select datediff(day,'2004-09-01','2004-09-18') --返回:17 4. datepart 返回代表指定日期的指定日期部分的整数。 SELECT DATEPART(month, '2004-10-15') --返回 10 5. datename 返回代表指定日期的指定日期部分的字符串 SELECT datename(weekday, '2004-10-15') --返回:星期五 6. day(), month(),year() --可以与datepart对照一下 select 当前日期=convert(var10),getdate(),120) ,当前时间=convert(var8),getdate(),114) select datename(dw,'2004-10-15')
select 本年第多少周=datename(week,'2004-10-15') ,今天是周几=datename(weekday,'2004-10-15') 函数 GetDate( )
参数/功能
返回系统目前的日期与时间
以interval 指定的方式,返回
DateDiff
date2 与date1两个日期之间的
(interval,date1,date2)
差值 date2-date1 DateAdd 以interval指定的方式,加上(interval,number,date) number之后的日期
返回日期date中,interval指定
DatePart (interval,date)
部分所对应的整数值 返回日期date中,interval指定
DateName (interval,date)
部分所对应的字符串名称
参数 interval的设定值如下:
Access 和
缩 写(Sql Server)
ASP Yy Qq Mm
yyyy q m y d w ww h n s -
值 Year Quarter Month
说明
年 1753 ~ 9999 季 1 ~ 4 月1 ~ 12
一年的日数,一年中的第几日 1-366 日,1-31
一周的日数,一周中的第几日 1-7
周,一年中的第几周 0 ~ 51 时0 ~ 23 分钟0 ~ 59 秒 0 ~ 59 毫秒 0 ~ 999
Day of year Dy Day Weekday Week Hour Minute Second
Dd Dw Wk Hh Mi Ss
Millisecond Ms
access 和 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 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
--如果要效率,这样写查询
--查询本周注册人数
where
create_day>=dateadd(day,2-datepart(weekday,getdate()),convert(varchar,getdate(),112)) and
create_day<dateadd(day,9-datepart(weekday,getdate()),convert(varchar,getdate(),112))
--上周注册人数
select count(*) from [user] where
create_day>=dateadd(day,-5-datepart(weekday,getdate()),convert(varchar,getdate(),112)) and
create_day<dateadd(day,2-datepart(weekday,getdate()),convert(varchar,getdate(),112))
--本月注册人数
select count(*) from [user]
where create_day>=dateadd(day,1-day(getdate()),convert(varchar,getdate(),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()),convert(varchar,getdate(),112)))
and create_day<dateadd(day,1-day(getdate()),convert(varchar,getdate(),112))
--本周
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()) --上月
where 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
;㈡ SQL 2005 查询本周/本月/本季度/本年的数据
本周数据:select * from Keywords where datediff(week, Addtime,getdate())=0
本月:select * from Keywords where datediff(month, Addtime,getdate())=0
本季度:select * from Keywords where datediff(quarter, Addtime,getdate())=0
本年:select * from Keywords where datediff(year, Addtime,getdate())=0
㈢ 请问用sql,怎么在一条语句内查询上周库存、本周库存和总库存
SELECT
COALESCE ( SUM( CASE WHEN 日期 = 上周日期函数 THEN 单个库存 ELSE 0 END ), 0 ) AS 上周总库存,
COALESCE ( SUM( CASE WHEN 日期 = 本周日期函数 THEN 单个库存 ELSE 0 END ), 0 ) AS 本周总库存,
SUM(单个库存) AS 总库存
FROM
库存表
用case then 大概就这意思,具体的参数自己修改修改就行了。
㈣ SQL 查询今天、昨天、7天内、30天的数据
主要用到sql 函数
DATEDIFF( datepart , startdate , enddate )
startdate=日期字段名称
--查询 今日
select * from tableA where DateDiff(dd,datetime类型字段,getdate())= 0
--查询 昨日
select * from tableA where DateDiff(dd,times,getdate())= 1
--查询 本周
select * from tableA where DateDiff(dd,VoucherDate,getdate())<=7
--查询 上周
select * from tableA where DateDiff(dd,VoucherDate,getdate())>7 and DateDiff(dd,VoucherDate,getdate())<=14
--查询 本月
select * from tableA where DateDiff(mm,VoucherDate,getdate())= 0
--查询 上月
select * from tableA where DateDiff(mm,VoucherDate,getdate())= 1
--查询 本年
select * from tableA where DateDiff(yy,VoucherDate,getdate())= 0
--查询 上一年
select * from tableA where DateDiff(yy,VoucherDate,getdate())= 1
㈤ sql查询本周内数据,周一至周天,表:tb_drsheet 时间字段:datEdt
SELECT*fromtb_drsheetwheredatediff(week,datEdt-1,getdate())=0
试试这个 oracle 的话修改相应的函数
㈥ sql server 获取年季度数,年周数,年天数,本周天数
SELECT
DATEPART(YEAR, GETDATE()) AS 年,
DATEPART(MONTH, GETDATE()) AS 月,
DATEPART(DAY, GETDATE()) AS 日,
DATEPART(HOUR, GETDATE()) AS 时,
DATEPART(MINUTE, GETDATE()) AS 分,
DATEPART(SECOND, GETDATE()) AS 秒,
DATEPART(MILLISECOND, GETDATE()) AS 毫秒,
DATEPART(QUARTER, GETDATE()) AS 季度,
DATEPART(DAYOFYEAR, GETDATE()) AS 年天数,
DATEPART(WEEK, GETDATE()) AS 年周数,
DATEPART(WEEKDAY, GETDATE()) AS 本周天数,
DATENAME(YEAR, GETDATE()) AS 年,
DATENAME(MONTH, GETDATE()) AS 月,
DATENAME(DAY, GETDATE()) AS 日,
DATENAME(HOUR, GETDATE()) AS 时,
DATENAME(MINUTE, GETDATE()) AS 分,
DATENAME(SECOND, GETDATE()) AS 秒,
DATENAME(MILLISECOND, GETDATE()) AS 毫秒,
DATENAME(QUARTER, GETDATE()) AS 季度,
DATENAME(DAYOFYEAR, GETDATE()) AS 年天数,
DATENAME(WEEK, GETDATE()) AS 年周数,
DATENAME(WEEKDAY, GETDATE()) AS 本周数
㈦ MSQL如何获取本周周一到周五的时间段
中文版sql Server中:
Select '本周一',DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)
Select '下周一',DATEADD(wk, DATEDIFF(wk,0,getdate())+1, 0)
Select '本周最末',dateadd(ms,-3,DATEADD(wk, DATEDIFF(wk,0,getdate())+1, 0))
Select '本周五',DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)
Select '本周五末',dateadd(day,-2,dateadd(ms,-3,DATEADD(wk, DATEDIFF(wk,0,getdate())+1, 0)))
㈧ 怎么用sql查询昨天,今天,明天和本周的记录
sql查询昨天,今天,明天和本周记录的方法
一、昨天,今天,明天和本周在SQL的处理中都是一个时间段,比如昨天指的就是昨天的:0点0分0秒到23点59分59秒。
二、例如表格:ygsrb
㈨ 在sql server 2008中如何查询本日、本周和本月数据
--本日
select*fromtablewherecolbetweencast((convert(varchar(10),getdate(),120)asdatetime)andcast((convert(varchar(10),getdate(),120)+'23:59:59.997'asdatetime)
或
SELECT*FROMtableWHEREdatediff(day,col,getdate())=0
--本周
SELECT*FROMtableWHEREdatediff(week,col,getdate())=0
--本月
select*fromtablewherecolbetweencast((convert(varchar(7),getdate(),120)+'-1'asdatetime)andcast((convert(varchar(7),dateadd(m,1,,getdate()),120)+'-1'asdatetime)
㈩ SQL Server 怎么获得本周内: 周六为第一天 周五为第最后一天
select datepart(w,getdate()+1) --星期六返回1,星期五返回7。
select convert(varchar(10),getdate()-datepart(w,getdate()+1)+1,120) --获取本周第一天,2013-4-20星期六,返回2013-04-20,是第一天。
select convert(varchar(10),getdate()-datepart(w,getdate()+1)+8,120) --获取本周最后一天,2013-4-20星期六,返回2013-04-27,是第一天。