一直都在用oracle,對sqlserver中的一些函式很不熟悉,在工作用偶爾會用到,貼在這裡,便於以後查詢
取出資料庫欄位中datetime列的日期部分:
(1)select datename(year,getdate())+'-'+datename(month,getdate())+'-'+datename(day,getdate())
(2)select convert(varchar(10),getdate(),120)
(3)select * from mydsk_提醒 where year(預約時間) = '2008' and month(預約時間)='8' and day(預約時間)='29' and 提醒人id ='50271'
(4)select * from mydsk_提醒 where convert(varchar(10),預約時間,120)='2008-08-29' and 提醒人id ='50271'
取出資料庫欄位中datetime列的時間部分:
cast(datepart(hh,預約時間)as varchar) --小時
cast(datepart(mi,預約時間)as varchar)--分鐘
cast(datepart(ss,預約時間)as varchar)--秒
***sql server 日期和時間函式
1、常用日期方法(下面的getdate() = '2006-11-08 13:37:56.233')
(1)datename ( datepart ,date )
返回表示指定日期的指定日期部分的字串。datepart詳見下面的列表.
select datename(day,getdate()) –返回8
(2)datepart ( datepart , date )
返回表示指定日期的指定日期部分的整數。
select datepart(year,getdate()) –返回2006
(3)dateadd (datepart , number, date )
返回給指定日期加上乙個時間間隔後的新datetime 值。
select dateadd(week,1,getdate()) --當前日期加一周後的日期
(4)datediff ( datepart , startdate , enddate )
返回跨兩個指定日期的日期邊界數和時間邊界數。
select datediff(month,'2006-10-11','2006-11-01') --返回1
(5)day ( date )
返回乙個整數,表示指定日期的天datepart 部分。
select day(getdate()) –返回8
(6)getdate()
以datetime 值的sql server 2005 標準內部格式返回當前系統日期和時間。
select getdate() --返回2006-11-08 13:37:56.233
(7)month ( date )
返回表示指定日期的「月」部分的整數。
select month(getdate()) --返回11
(8)year ( date )
返回表示指定日期的「年」部分的整數。
select year(getdate()) --返回2006
2、取特定日期
(1)獲得當前日期是星期幾
select datename(weekday,getdate()) --wednesday
(2)計算哪一天是本週的星期一
select dateadd(week, datediff(week,'1900-01-01',getdate()), '1900-01-01') --返回2006-11-06 00:00:00.000
或select dateadd(week, datediff(week,0,getdate()),0)
(3)當前季度的第一天
select dateadd(quarter, datediff(quarter,0,getdate()), 0)—返回2006-10-01 00:00:00.000
(4)如何取得某個月的天數
select day(dateadd(ms,-3,dateadd(mm, datediff(m,0,'2006-02-03')+1,0))) —返回28
(5)乙個季度多少天
declare @m tinyint,@time smalldatetime
select @m=month(getdate())
select @m=case when @m between 1 and 3 then 1
when @m between 4 and 6 then 4
when @m between 7 and 9 then 7
else 10 end
select @time=datename(year,getdate())+'-'+convert(varchar(10),@m)+'-01'
select datediff(day,@time,dateadd(mm,3,@time)) —返回92
(6)獲得年月日(yyyy-mm-dd)
select convert(varchar(10),getdate(),120) –返回2006-11-08
3、其它
(1)--下面的示例將日期指定為數字。
資料庫引擎將0 解釋為1900 年1 月1 日。
select month(0), day(0), year(0) –返回1 1 1900
--下面兩句是等效的
select datename(weekday,0)
select datename(weekday,'1900-01-01')
(2)set datefirst
將一周的第一天設定為從1 到7 的乙個數字。
set datefirst 1 --表示一周的第一天是「星期一"
select datename(weekday,getdate()) --wednesday
select datepart(weekday,getdate()) --返回3
--檢視當前設定情況
select @@datefirst
(3)set dateformat
設定用於輸入datetime 或smalldatetime 資料的日期部分(月/日/年)的順序。
...有效引數包括mdy、dmy、ymd、ydm、myd 和dym。
...該設定僅用在將字串轉換為日期值時的解釋中。它不影響日期值的顯示。
...set dateformat 的設定是在執行或執行時設定,而不是在分析時設定。
...set dateformat 將覆蓋set language 的隱式日期格式設定。
下面是例子:
-- set date format to year, day, month.
set dateformat ydm;
godeclare @datevar datetime;
set @datevar = '1998/31/12';
select @datevar as datevar;
go-- set date format to year, month, day.
set dateformat ymd;
godeclare @datevar datetime;
set @datevar = '1998/12/31';
select @datevar as datevar;
go(4)日期部分的列表
日期部分
縮寫year
yy, yyyy
quarter
qq, q
month
mm, m
dayofyear
dy, y
day
dd, d
week
wk, ww
weekday
dwhour
hhminute
mi, n
second
ss, s
millisecond
ms資料型別
範圍datetime
1753 年 1 月 1 日到 9999 年 12 月 31 日
smalldatetime
1900 年 1 月 1 日到 2079 年 6 月 6 日
SQL Server 日期函式
獲取當前系統日期時間。取決於 1 精度要求 2 utc時間還是系統時間 3 要不要帶時區 與 getdate 和 getutcdate 比較而言,sysdatetime 和 sysutcdatetime 的秒的小數部分精度更高。sysdatetimeoffset 包含系統時區偏移量。sysdatet...
sql server日期時間函式
2.dateadd 在向指定日期加上一段時間的基礎上,返回新的 datetime 值 例如 向日期加上2天 select dateadd day,2,2004 10 15 返回 2004 10 17 00 00 00.000 3.datediff 返回跨兩個指定日期的日期和時間邊界數。select ...
sql server日期時間函式
sql server日期時間函式 sql server中的日期與時間函式 1.當前系統日期 時間 select getdate 2.dateadd 在向指定日期加上一段時間的基礎上,返回新的 datetime 值 例如 向日期加上2天 select dateadd day,2,2004 10 15 ...