在SQL server 2005自訂函數(純量值函數):生為IT人死為IT鬼:Xuite日誌
  • Contact with me
  • joehwang
  • 參觀人氣統計
  • 最新回應
  • Re:Flash取資料庫資料-以Loadvars及XML為例,by(Asr)於2008-08-12
    Re:AS3 to JPG,by(easygame)於2008-07-10
    Re:YUI的AutoComplete,by(joehwang)於2008-04-15
    Re:YUI的AutoComplete,by(jerry)於2008-04-11
    Re:AS3 to JPG,by(joehwang)於2008-01-15
  • 最新引用
  • 沒有新引用
  • 文章分類
  • 訪客
  • 廣告
  • 2007-12-26 20:37 在SQL server 2005自訂函數(純量值函數)
  • ?
  • SQL
  • 好文轉寄
  • 平均分數:0 顆星    投票人數:0
    我要評分:
    標籤 : 


    因為要計算時間區間內沒有周休二日、午休時間的真正上班時間

    之前寫在asp、php裡感覺比較慢也覺得code不好維護。

    為什麼SQL沒有只抓上班時間的函數= =

    研究了一下自訂函數的方法,因為第一次接觸有錯請告訴我,謝謝

    撰寫的位置:

    登入SQL Server Management Studio後>新增查詢

    CODE:

    --登入你的DB
    USE Tbcwmonet;
    GO
    --如果dbo.GetWorkMinute這個函已存在就刪掉
    IF OBJECT_ID (N'dbo.GetWorkMinute', N'FN') IS NOT NULL
        DROP FUNCTION dbo.GetWorkMinute;
    GO
    CREATE     FUNCTION GetWorkMinute
    (
         @要帶入的值1 資料型態 ,
         @要傳入的值2 資料型態,
         @..............................
    )
    RETURNS int
    AS

    begin

    return @要傳回的值
    end

    說明
    Begin....END:類似C、Java、PHP的大括號{、}用來把程式的區塊標出來

    EX:
    (計算日期區間中的六、日有幾天)
    while  @i<=DateDiff(day,@startDate,@endDate)
       begin 
        set @x=DateAdd(day,@i,@startDate) 
        if DatePart(weekday,@x)=1 or DatePart(weekday,@x)=7     
         set @weekdays=@weekdays+1  
         set @i=@i+1    
       end

    變數要用declare宣告,並用@開頭,值給變數時要用set

    EX:
    declare @DayMinute int,@s_Minute DATETIME
    set @DayMinute = 8*60   
    set @s_Date ="2008/01/01"

     

    寫完後按執行
    SQL server 2005自訂函數會放在DB中>可程式性>函數>純量值函數的資料夾中。

     

     

     



    joehwang / Xuite日誌 / 回應(0) / 引用(0) / 好文轉寄
  • 回應