sqlserver 查询当日、当月数据

本文详细介绍了 SQL Server 中常用的时间函数及其应用场景,包括获取当前日期时间、日期加减运算、计算日期差等实用技巧。
--查询当天:   
select * from info where DateDiff(dd,datetime,getdate())=0   
  
--查询24小时内的:   

select * from info where DateDiff(hh,datetime,getDate())<=24


--本月记录   
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(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 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年

原文:http://blog.youkuaiyun.com/xyzqiang/article/details/7629455

### SQL Server 中按月统计当日日期的方法 为了实现按照每月统计数据并仅考虑当月数据,在SQL Server中可以采用如下方式构建查询语句: 对于特定表中的记录,如果目标是在每个月内基于某列(假设名为`SaleDate`表示销售日期)来汇总销售额(`SaleAmount`),并且只关注当前月份的数据,则可利用 `YEAR()` 和 `MONTH()` 函数配合条件过滤以及聚合操作完成此需求。 ```sql -- 假设有一个SalesData表格含有SaleDate和SaleAmount字段 SELECT YEAR(SaleDate) AS 年份, MONTH(SaleDate) AS 月份, SUM(SaleAmount) AS 总额 -- 对销售额求和 FROM SalesData WHERE YEAR(SaleDate) = YEAR(GETDATE()) AND -- 只取当年的数据 MONTH(SaleDate) = MONTH(GETDATE()) -- 进一步限定到当月 GROUP BY YEAR(SaleDate), MONTH(SaleDate); ``` 上述代码通过组合使用 `GETDATE()`, `YEAR()`, 和 `MONTH()` 函数实现了对指定时间段内的数据筛选,并运用了 `SUM()` 聚合函数来进行金额总计。这里还应用到了 `GROUP BY` 子句以便于根据年份和月份进行分组计算[^1]。 此外,也可以更简洁地表达同样的逻辑,即直接比较日期而不显式提取年份和月份部分: ```sql SELECT COUNT(*) AS 记录数, SUM(SaleAmount) AS 销售总额 FROM SalesData WHERE SaleDate >= DATEADD(DAY, 1-DAY(GETDATE()), CAST(CONVERT(VARCHAR(8), GETDATE(), 112) AS DATETIME)) AND SaleDate < DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) + 1, 0) ``` 这段脚本同样达到了相同的效果——它选取了自本月第一天起至昨天为止的所有交易记录,并对其进行了数量上的计数及总金额的累加运算。这种方法避免了多次调用字符串转换函数带来的性能开销,同时也保持了一定程度上的易读性[^4]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值