濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > 教你輕松學(xué)會(huì)SQL Server記錄輪班的技巧

教你輕松學(xué)會(huì)SQL Server記錄輪班的技巧

熱門(mén)標(biāo)簽:智能語(yǔ)音車(chē)載電話機(jī)器人 安陽(yáng)天音防封電銷卡 衛(wèi)星地圖標(biāo)注距離 外呼系統(tǒng)的話術(shù) 陽(yáng)光創(chuàng)信ai外呼獲客系統(tǒng)助力 貴州外呼回?fù)芟到y(tǒng)是什么 競(jìng)圣地圖標(biāo)注服務(wù) 智能外呼系統(tǒng)需要多少錢(qián) 云南全自動(dòng)外呼系統(tǒng)公司

例:公司員工采取三個(gè)輪班制度:凌晨0:00到早上8:00為第一班,早上8:00到下午4:00為第二班,下午4:00到晚上12:00為第三班。

員工使用電子時(shí)鐘進(jìn)行簽名,這種電子簽名可以自動(dòng)將記錄添加到SQL Server數(shù)據(jù)庫(kù)中。但是,有時(shí)候,需要增加一個(gè)夜班;即使這個(gè)輪班發(fā)生在第二天,它仍然會(huì)被認(rèn)為是第三班。

你也許希望根據(jù)輪班對(duì)記錄進(jìn)行分組,但是在你的計(jì)劃中會(huì)有兩個(gè)非常令人頭痛的問(wèn)題:
(1)不是所有的雇員都是按時(shí)到達(dá)的;
(2)有時(shí)候員工工作的時(shí)間會(huì)比他們的一個(gè)輪班的時(shí)間長(zhǎng)一些。

為了能在你的列表中得到正確的分組,你必須假設(shè)所有的員工能在一個(gè)輪班的開(kāi)始和結(jié)束時(shí)間之間的任意時(shí)間開(kāi)始工作。

使用CASE語(yǔ)句是一種解決辦法。Listing A中的SQL語(yǔ)句告訴我們,在創(chuàng)建測(cè)試表沒(méi)有錯(cuò)誤的情況下,它是如何工作的。

為了使程序代碼完全準(zhǔn)確的運(yùn)行,你需要在時(shí)間的小窗口中得到每一個(gè)輪班的開(kāi)始時(shí)間和下一個(gè)輪班的結(jié)束時(shí)間。在剛才的例子中,你可以用"15:59:59.123"這個(gè)值代替@StartTime,然后再重新運(yùn)行代碼。這時(shí)候,你必須在每一個(gè)輪班結(jié)束的分界點(diǎn)上增加999毫秒。

解決方案

這個(gè)例子假設(shè)輪班時(shí)間從來(lái)沒(méi)有改變過(guò),但是如果改變了輪班時(shí)間該怎么辦呢?你必須仿照這個(gè)例子并根據(jù)改變了的時(shí)間寫(xiě)出所有的代碼。

一個(gè)更好一點(diǎn)的主意就是,針對(duì)我們的輪班創(chuàng)建一個(gè)表來(lái)調(diào)用Shifts的開(kāi)始時(shí)間和結(jié)束時(shí)間。在這個(gè)表中,你可以修改Case語(yǔ)句來(lái)查找StopTime列。

Listing B中包含了創(chuàng)建Shifts表并向該表中增加記錄的代碼。代碼在一個(gè)輪班中設(shè)置了時(shí)間后,這樣使代碼看上去既簡(jiǎn)單又靈活:

復(fù)制代碼 代碼如下:

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


我之所以要將輪班記錄進(jìn)行降序排列,是為了避免第三個(gè)輪班的邊界問(wèn)題。我將用一些測(cè)試案例來(lái)論證我的結(jié)論,這些內(nèi)容你可以在Listing C中看到。

實(shí)際上,你可以將這個(gè)邏輯應(yīng)用到TemeCards表的記錄中去,而不需要?jiǎng)?chuàng)建另外的表,也就不需要在表中增加數(shù)據(jù)了。我同樣使用一個(gè)簡(jiǎn)單的變量來(lái)論證我的邏輯。

標(biāo)簽:欽州 鄂爾多斯 河源 預(yù)約服務(wù) 周口 湘潭 營(yíng)口 寧夏

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《教你輕松學(xué)會(huì)SQL Server記錄輪班的技巧》,本文關(guān)鍵詞  教你,輕松,學(xué)會(huì),SQL,Server,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《教你輕松學(xué)會(huì)SQL Server記錄輪班的技巧》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于教你輕松學(xué)會(huì)SQL Server記錄輪班的技巧的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    峨山| 宝清县| 乌拉特中旗| 阜平县| 福鼎市| 永福县| 丰城市| 西平县| 嘉定区| 马边| 武冈市| 乐亭县| 民丰县| 东兴市| 永吉县| 邵东县| 阳曲县| 太原市| 龙口市| SHOW| 桃江县| 朝阳市| 平定县| 安乡县| 平凉市| 昌都县| 临夏县| 阜阳市| 资源县| 江川县| 宝兴县| 宜良县| 中江县| 荥阳市| 平和县| 河北区| 屏东市| 固原市| 二连浩特市| 五寨县| 普陀区|