bestlong 怕失憶論壇

 

 

搜索
bestlong 怕失憶論壇 論壇 Database - 資料庫 MS SQL Server MSSQL 日期與時間處理方法
查看: 7876|回復: 3
go

MSSQL 日期與時間處理方法 [複製鏈接]

Rank: 9Rank: 9Rank: 9

1#
發表於 2010-2-24 17:04 |只看該作者 |倒序瀏覽 |打印
取得目前時間(日期時間型態資料)

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
我是雪龍
http://blog.bestlong.idv.tw
http://www.bestlong.idv.tw

Rank: 9Rank: 9Rank: 9

2#
發表於 2010-2-24 17:35 |只看該作者
參考來源 http://ithelp.ithome.com.tw/question/10018369
  1. Create Procedure dbo.uspGetWorkingDay
  2.   @date1 datetime
  3. as
  4. --取傳入的日期之後扣掉(六)(日)的第四天

  5. declare @counter1 int
  6. declare @day_count int

  7. select @counter1 = 0
  8. select @day_count= 4

  9. while @counter1 < @day_count
  10. begin
  11.   if (datepart(weekday,dateadd(dd,+1,@date1)) != 1 AND datepart(weekday,dateadd(dd,+1,@date1)) != 7)
  12.     select @counter1 = @counter1 + 1
  13.   select @date1 = dateadd(dd,+1,@date1)
  14. end

  15. select workingday = @date1
  16. go
  17. exec uspGetWorkingDay '2008/01/01'
複製代碼
我是雪龍
http://blog.bestlong.idv.tw
http://www.bestlong.idv.tw

Rank: 9Rank: 9Rank: 9

3#
發表於 2010-7-2 08:28 |只看該作者
產生日期列表
  1. declare @datelist table(datelist datetime)
  2. declare @sdate datetime
  3. declare @edate datetime

  4. select @sdate = '2010/01/01'
  5. select @edate = '2010/12/31'
  6. while @sdate <= @edate
  7. begin
  8.         insert into @datelist select @sdate
  9.         set @sdate = dateadd(dd,1,@sdate)
  10. end
  11. select * from @datelist
複製代碼
在 SQL Query Analyzer 中的執行結果:
datelist.jpg
我是雪龍
http://blog.bestlong.idv.tw
http://www.bestlong.idv.tw

Rank: 9Rank: 9Rank: 9

4#
發表於 2010-7-2 15:50 |只看該作者
改成使用者自定函數
  1. if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[uf_getDateList]') and xtype in (N'FN', N'IF', N'TF'))
  2. drop function [dbo].[uf_getDateList]
  3. GO

  4. create function [dbo].[uf_getDateList](
  5. @sdate datetime,
  6. @edate datetime
  7. ) returns @datelist table(datelist datetime)
  8. as begin
  9.         while @sdate <= @edate
  10.         begin
  11.                 insert into @datelist select @sdate
  12.                 set @sdate = dateadd(dd,1,@sdate)
  13.         end
  14.         return
  15. end
  16. GO
複製代碼
就可以用下列SQL方便使用
  1. select * from uf_getDateList('2010/06/01','2010/6/30')
複製代碼
我是雪龍
http://blog.bestlong.idv.tw
http://www.bestlong.idv.tw
‹ 上一主題|下一主題

Archiver|怕失憶論壇

GMT+8, 2024-4-26 12:28 , Processed in 0.012131 second(s), 13 queries .

Powered by Discuz! X1.5

© 2001-2010 Comsenz Inc.