SQL SERVER学习笔记之时间日期查询

1.查询最近一段时间(1天,1一个月,一年)的数据

语法

select * from 表名 where 时间列名>=DateAdd(m,-1,getdate())     

最近一个月,之前的用-,将来的用+,
DateAdd第一个参数可选值:

year yy, yyyy
quarter qq, q
Month mm, m
dayofyear dy, y
Day dd, d
Week wk, ww
Hour hh
minute mi, n
second ss, s
millisecond ms

2.查询某时间范围内的数据

语法

select * from 表名 where 时间列名 BETWEEN '开始时间' and '结束时间'

3.查询本月,本年,本周,今天的数据

语法

SELECT * FROM 表名 where DATEDIFF(year,时间列名,GETDATE())=0

DATEDIFF第一个参数可选值:

year yy, yyyy
quarter qq, q
Month mm, m
dayofyear dy, y
Day dd, d
Week wk, ww
Hour hh
minute mi, n
second ss, s
millisecond ms

4. 根据条件查询两个日期的时间差

语法

SELECT DATEDIFF ( DAY , 开始时间列名 , 结束时间列名 ) from 表名 where 条件

5.查询某列数据的最大值,最小值,平均值(单语句单次查询)

语法

SELECT top 1 * FROM 表名 where 查询条件 order by 查询列 desc      //最大值
SELECT top 1 * FROM 表名 where 查询条件 order by 查询列 asc      //最大值
SELECT AVG (查询列) from 表名 where  查询条件     //平均值

(单语句多次查询)

 SELECT MAX  (查询列) as 最大值, 
        MIN (查询列) as 最小值,
        AVG (查询列) as 平均值 
 from 表名 where  查询条件

如果是查询两个时间差的平均值,最大值,最小值
换算成一个单位,比如秒

SELECT MAX (DATEDIFF(s,开始时间,结束时间)) as 最长用时,
       MIN(DATEDIFF(s,开始时间,结束时间)) as 最短用时 , 
       AVG(DATEDIFF(s,开始时间,结束时间)) as 平均用时
from 表名 where  查询条件

6.关系表查询

select * from 表a inner join 表b on 关联的列 where 查询条件

猜你喜欢

转载自blog.csdn.net/h5_since/article/details/118673083