在数据库SQL中使用的时间函数

GetDate()获得的日期由两部分组成,分别是今天的日期和当时的时间: Select GetDate()

  用DateName()就可以获得相应的年、月、日,然后再把它们连接起来就可以了:

  Select Datename(year,GetDate())+'-'+Datename

  (month,GetDate())+'-'+Datename(day,GetDate())

  另外,DateName()还可以获得到小时、时间、秒、星期几、第几周,分别如下:

  Select Datename(hour,GetDate())

  Select Datename(minute,GetDate())

  Select Datename(second,GetDate())

  Select Datename(weekDay,GetDate())

  Select Datename(week,GetDate())

  SQL中的日期类型DateTime的默认格式就是yyyy-mm-dd hh:mi:ss: mmm,可大多数的情况我们只想得到他的日期部分,而不许要后面的时间。上一篇中提到用Datename()函数来截取拼接出不包含时间部分的日期,现在再说一种方法,更加简单的获取到不包含时间的日期!

  使用Convert()函数:

  select convert(char(10),GetDate(),120) as Date

  * 第3个参数就是用来设置日期类型数据的显示样式的,下面介绍几种样式的参数:

  100 mm dd yyyy

  101 mm/dd/yyyy

  102 yyyy.mm.dd

  103 dd/mm/yyyy

  106 dd mm yyyy

  108 hh:mi:ss(时间)

  111 yyyy/mm/dd

  112 yyyymmdd

  120 yyyy-mm-dd
大家可以发现,用这种方法获得日期部分将会更加方便,与这种方法比较Datename()函数的好处就是在于得到日期的具体部分。

-----------------------------------------------------------

使用 datediff()函数

select * from 表名 where datediff(wk,时间字段-1,getdate())=0 /*获得一周内所有数据*/
select * from 表名 where datediff(mm,时间字段,getdate())=0 /*获得一月内所有数据*/
select * from 表名 where datediff(qq,时间字段,getdate())=0 /*获得一个季度内所有的数据*/
select * from 表名 where datediff(yy,时间字段,getdate())=0 /*获得一年内所有数据*/
或者
首先设置一周起始时间为周一 Set Datefirst 1,但是Set Datefirst 1对datediff不起效果,对Datepart起作用,所以把
datediff(wk,时间字段-1,getdate())=0
改成
Datepart(wk,时间字段) = Datepart(wk,getDate())




  

你可能感兴趣的:(SQL)