作一個項目的時候常常會遇到各類各樣的時間問題須要處理,有些函數常常會忘記,翻閱一些資料,加上本身的需求,簡單的總結記憶一下基礎知識,方便之後使用數據庫
一.convert函數ide
簡單用法: 函數
- 查詢某天的數據
- 非:PublishTime=@PublishTime
- 而應:select * from Meeting where convert(varchar(10),PublishTime,121))=@PublishTime
分析:好比爲@PubilishTime提供參數‘2011-04-18’,通過抓花以後,實際上至關於查詢PubilishTime=2011-04-18 00:00:00 ,從而不會得出真實的當天數據。性能
注:convert通常用的也比較少,由於通常的時候時間列都創建有非彙集索引,convert函數會使數據庫認爲放棄按照時間索引的方式進行數據查詢,在一些數據量很是大的數據表裏,這種查詢是很是影響性能的。spa
時間的一些轉換格式:xml
- select Convert(varchar(10),getdate(),120)
- 2011-05-12
- select CONVERT(varchar, getdate(), 120 )
- 2011-05-12 11:06:08
- select replace(replace(replace(CONVERT(varchar, getdate(),
- select CONVERT(varchar(12) , getdate(), 111 )
- 2011/05/12
- select CONVERT(varchar(12) , getdate(), 112 )
- 20110512
- select CONVERT(varchar(12) , getdate(), 102 )
- 2011.05.12
- select CONVERT(varchar(12) , getdate(), 103 )
- 12/09/2004
- select CONVERT(varchar(12) , getdate(), 104 )
- 12.05.2011
- select CONVERT(varchar(12) , getdate(), 105 )
- 12-05-2011
- select CONVERT(varchar(12) , getdate(), 106 )
- 12 05 2011
- select CONVERT(varchar(12) , getdate(), 108 )
- 11:06:08
- select CONVERT(varchar(12) , getdate(), 110 )
- 09-12-2011
二。簡單一些函數索引
(1)查詢年.月.日 get
- select year(getdate())--年
- select month(getdate())--月
- select day(getdate())--日
(2)查詢每週的數據it
- SELECT * FROM HW_SRDH WHERE datediff(week,SRSJ,getdate())=0 --本週數據
- SELECT * FROM HW_SRDH WHERE datediff(week,SRSJ,getdate())=1 --上週數據
(3)日期加法class
- select dateadd(month,2,getdate()) --加兩月
- select dateadd(day,2,getdate()) --加兩天
(4)查詢兩端日期之間的天數
- select datediff(day,'2011-09-01','2011-09-18')
(5)獲得一個日期的年份
- SELECT DATEPART(year, '2004-10-15')
(6)返回平年仍是閏年
- SELECT
- case
- day(dateadd(mm, 2, dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0))))
- when 28
- then '平年'
- else '閏年'
- end
(7)返回指定日期是星期幾。
- SELECT datename(weekday, getdate())
(8)返回當前日期是當年第多少周
- select 本年第多少周=datename(week, getdate())
(9)
- --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)