程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> MSSQL >> 敕令行啟動mssqlserver辦事的辦法示例

敕令行啟動mssqlserver辦事的辦法示例

編輯:MSSQL

敕令行啟動mssqlserver辦事的辦法示例。本站提示廣大學習愛好者:(敕令行啟動mssqlserver辦事的辦法示例)文章只能為提供參考,不一定能成為您想要的結果。以下是敕令行啟動mssqlserver辦事的辦法示例正文


例:公司員工采用三個輪班軌制:清晨0:00到早上8:00為第一班,早上8:00到下晝4:00為第二班,下晝4:00到早晨12:00為第三班。

員工應用電子時鐘停止簽名,這類電子簽名可以主動將記載添加到SQL Server數據庫中。然則,有時刻,須要增長一個日班;即便這個輪班產生在第二天,它依然會被以為是第三班。

你或許願望依據輪班對記載停止分組,然則在你的籌劃中會有兩個異常使人頭痛的成績:
(1)不是一切的雇員都是按時達到的;
(2)有時刻員工任務的時光會比他們的一個輪班的時光長一些。

為了能在你的列表中獲得准確的分組,你必需假定一切的員工能在一個輪班的開端和停止時光之間的隨意率性時光開端任務。

應用CASE語句是一種處理方法。Listing A中的SQL語句告知我們,在創立測試表沒有毛病的情形下,它是若何任務的。

為了使法式代碼完整精確的運轉,你須要在時光的小窗口中獲得每個輪班的開端時光和下一個輪班的停止時光。在適才的例子中,你可以用"15:59:59.123"這個值取代@StartTime,然後再從新運轉代碼。這時候候,你必需在每個輪班停止的分界點上增長999毫秒。

處理計劃

這個例子假定輪班時光歷來沒有轉變過,然則假如轉變了輪班時光該怎樣辦呢?你必需模仿這個例子並依據轉變了的時光寫出一切的代碼。

一個更好一點的主張就是,針對我們的輪班創立一個表來挪用Shifts的開端時光和停止時光。在這個表中,你可以修正Case語句來查找StopTime列。

Listing B中包括了創立Shifts表並向該表中增長記載的代碼。代碼在一個輪班中設置了時光後,如許使代碼看上去既簡略又靈巧:


DECLARE @StartTime VARCHAR(20)
SET @StartTime ="22:59:59"
SELECTTOP 1 ShiftName FROM ShiftWork.Shifts
WHERE Shifts.StartTime <= @StartTime
ORDERBY StartTime DESC


我之所以要將輪班記載停止降序分列,是為了不第三個輪班的界限成績。我將用一些測試案例來論證我的結論,這些內容你可以在Listing C中看到。

現實上,你可以將這個邏輯運用到TemeCards表的記載中去,而不須要創立別的的表,也就不須要在表中增長數據了。我異樣應用一個簡略的變量來論證我的邏輯。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved