bestlong 怕失憶論壇
標題:
MSSQL 日期與時間處理方法
[打印本頁]
作者:
bestlong
時間:
2010-2-24 17:04
標題:
MSSQL 日期與時間處理方法
取得目前時間(日期時間型態資料)
select getdate()
取得 YY/MM/DD(字串型態資料)
select convert(char,getdate(),11)
取得 YYYY/MM/DD(字串型態資料)
select convert(char,getdate(),111)
取得 YYMMDD(字串型態資料)
select convert(char,getdate(),12)
取得 YYYYMMDD(字串型態資料)
select convert(char,getdate(),112)
取得 YYYYMMDD(日期時間型態資料)
select dateadd(dd,datediff(dd,0,getdate()),0)
取得星期幾的單一中文字(日,一,二,三,四,五,六)
SELECT Right(datename(weekday,getdate()),1) --系統地區語言必須為中文地區
SELECT CASE datepart(dw, getdate())
WHEN 1 THEN '日'
WHEN 2 THEN '一'
WHEN 3 THEN '二'
WHEN 4 THEN '三'
WHEN 5 THEN '四'
WHEN 6 THEN '五'
WHEN 7 THEN '六' END
作者:
bestlong
時間:
2010-2-24 17:35
參考來源
http://ithelp.ithome.com.tw/question/10018369
Create Procedure dbo.uspGetWorkingDay
@date1 datetime
as
--取傳入的日期之後扣掉(六)(日)的第四天
declare @counter1 int
declare @day_count int
select @counter1 = 0
select @day_count= 4
while @counter1 < @day_count
begin
if (datepart(weekday,dateadd(dd,+1,@date1)) != 1 AND datepart(weekday,dateadd(dd,+1,@date1)) != 7)
select @counter1 = @counter1 + 1
select @date1 = dateadd(dd,+1,@date1)
end
select workingday = @date1
go
exec uspGetWorkingDay '2008/01/01'
複製代碼
作者:
bestlong
時間:
2010-7-2 08:28
產生日期列表
declare @datelist table(datelist datetime)
declare @sdate datetime
declare @edate datetime
select @sdate = '2010/01/01'
select @edate = '2010/12/31'
while @sdate <= @edate
begin
insert into @datelist select @sdate
set @sdate = dateadd(dd,1,@sdate)
end
select * from @datelist
複製代碼
在 SQL Query Analyzer 中的執行結果:
2010-7-2 08:35 上傳
下載附件
(41.41 KB)
圖片附件:
datelist.jpg
(2010-7-2 08:35, 41.41 KB) / 下載次數 189
http://www.bestlong.idv.tw/forum.php?mod=attachment&aid=MTQ2fDM3NDIxYzhifDE3NDYxNTA3MjR8MA%3D%3D
作者:
bestlong
時間:
2010-7-2 15:50
改成使用者自定函數
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[uf_getDateList]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[uf_getDateList]
GO
create function [dbo].[uf_getDateList](
@sdate datetime,
@edate datetime
) returns @datelist table(datelist datetime)
as begin
while @sdate <= @edate
begin
insert into @datelist select @sdate
set @sdate = dateadd(dd,1,@sdate)
end
return
end
GO
複製代碼
就可以用下列SQL方便使用
select * from uf_getDateList('2010/06/01','2010/6/30')
複製代碼
歡迎光臨 bestlong 怕失憶論壇 (http://www.bestlong.idv.tw/)
Powered by Discuz! X1.5