SQL Server 获取本周,本月,本年等时间内记录
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(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-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 | 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 查询本周本月问题
- ---求相差天数
- 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(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())
- --上月
- select count(*) from User
- 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 Server 获取本周,本月,本年等时间内记录的更多相关文章
- SQLServer数据库之SQL Server 获取本周,本月,本年等时间内记录
本文主要向大家介绍了SQLServer数据库之SQL Server 获取本周,本月,本年等时间内记录,通过具体的内容向大家展现,希望对大家学习SQLServer数据库有所帮助. datediff(we ...
- JAVA获取本周 本月 本年 第一天和最后一天
/** * 日期工具类 */ public class DateUtils { /** * 获取今天 * @return String * */ public static String getTod ...
- moment.js获取本周本月本年的开始日期和结束日期
//获取本日 const startDate = moment().format('YYYY-MM-DD'); const startDate = moment().format('YYYY-MM-D ...
- oracle SQL语句取本周本月本年的数据
--国内从周一到周日 国外是周日到周六 select to_char(sysdate-1,'D') from dual;--取国内的星期几 去掉减一取国外的星期 --取本周时间内的数据 ,)+) an ...
- Sql Server 获取本周周一
SELECT DATEADD(Day,(@i+1)-(DATEPART(Weekday,getdate())+@@DATEFIRST-1)%7,getdate())
- js设置本周 本月 本年
var SetSearchDate = function (sign, sid, eid) {//sign 标识符区分本周本月本年,sid开始时间id,eid结束时间id var now = new ...
- SQL Server获取下一个编码字符串的实现方案分割和进位
我在前一种解决方案SQL Server获取下一个编码字符实现和后一种解决方案SQL Server获取下一个编码字符实现继续重构与增强两篇博文中均提供了一种解决编码的方案,考虑良久对比以上两种方 ...
- SQL Server获取下一个编码字符实现继续重构与增强
我在SQL Server获取下一个编码字符实现的博文中,虽然实现了这个问题,但是感觉维护起来比较麻烦,例如如果调整编码字符串的固定长度,就需要变更三个函数,这样的为何成本确实比较大.面向对象编 ...
- SQL SERVER获取数据库文件信息
MS SQL SERVER 获取当前数据库文件等信息,适用于多个版本: SELECT dbf.file_id AS FileID , dbf.name AS [FileName] , s.fi ...
随机推荐
- Apache常见功能实战详解
Apache 是一款使用量排名第一的 web 服务器,LAMP 中的 A 指的就是它.由于其开源.稳定.安全等特性而被广泛使用.前边的一篇文章中已经记录过如何搭建 LAMP 架构,搭建仅是第一步,其中 ...
- react-router3.x hashHistory render两次的bug,及解决方案
先写一个简单App页面,其实就是简单修改了react-router的官方例子中的animations例子,修改了两个地方: 1.路由方式由browserHistory修改为hashHistory 2. ...
- java程序测试之字符流
package filestream; import java.io.FileReader; import java.io.FileWriter; import java.io.FileNotFoun ...
- [Hadoop] - 自定义Mapreduce InputFormat&OutputFormat
在MR程序的开发过程中,经常会遇到输入数据不是HDFS或者数据输出目的地不是HDFS的,MapReduce的设计已经考虑到这种情况,它为我们提供了两个组建,只需要我们自定义适合的InputFormat ...
- Vue.js 系列教程 5:动画
原文:intro-to-vue-5-animations 译者:nzbin 译者的话:经过两周的努力,终于完成了这个系列的翻译,由于时间因素及个人水平有限,并没有详细的校对,其中仍然有很多不易理解的地 ...
- 做一款直播类app
ijkplayer 是一款做视频直播的框架, 基于ffmpeg, 支持 Android 和 iOS, 网上也有很多集成说明, 但是个人觉得还是不够详细, 在这里详细的讲一下在 iOS 中如何集成ijk ...
- 连载《一个程序猿的生命周期》-《发展篇》 - 7.是什么阻碍了"程序猿"的发展?
有两件事想记录一下,具有普遍性和代表性."程序猿"加了引号,是泛指一类人,也并非局限于IT行业. 山东子公司的总经理是公司大股东之一,个子不高.有些秃顶.面容显老,但看 ...
- javascipt : reduce
$scope.totalPrice = function () { return $scope.addcartProduct.reduce(function (money, product) { re ...
- 关于input只能输入数字的两种小方法
第一种: 直接给input标签 name赋值如下 <input name="start_price" id="start_price" type=&quo ...
- 初探nginx负载均衡集群
借LVS的环境: A(dir):192.168.122.129 B(rs1):192.168.122.140 C(rs2):192.168.122.141 Centos 6下如果安装过epel的yum ...