SQL Server各種日期計算

2021-01-08 電子產品世界

通常,你需要獲得當前日期和計算一些其他的日期,例如,你的程序可能需要判斷一個月的第一天或者最後一天。你們大部分人大概都知道怎樣把日期進行分割(年、月、日等),然後僅僅用分割出來的年、月、日等放在幾個函數中計算出自己所需要的日期!在這篇文章裡,我將告訴你如何使用DATEADD和DATEDIFF函數來計算出在你的程序中可能你要用到的一些不同日期。

  在使用本文中的例子之前,你必須注意以下的問題。大部分可能不是所有例子在不同的機器上執行的結果可能不一樣,這完全由哪一天是一個星期的第一天這個設置決定。第一天(DATEFIRST)設定決定了你的系統使用哪一天作為一周的第一天。所有以下的例子都是以星期天作為一周的第一天來建立,也就是第一天設置為7.假如你的第一天設置不一樣,你可能需要調整這些例子,使它和不同的第一天設置相符合。當然,你可以通過@@DATEFIRST函數來檢查第一天設置。

  一、為了理解這些例子,我們先複習一下DATEDIFF和DATEADD函數。DATEDIFF函數計算兩個日期之間的小時、天、周、月、年等時間間隔總數。DATEADD函數計算一個日期通過給時間間隔加減來獲得一個新的日期。要了解更多的DATEDIFF和DATEADD函數以及時間間隔可以閱讀微軟聯機幫助。

  使用DATEDIFF和 DATEADD函數來計算日期,和本來從當前日期轉換到你需要的日期的考慮方法有點不同。你必須從時間間隔這個方面來考慮。比如,從當前日期到你要得到的日期之間有多少時間間隔,或者,從今天到某一天(比如1900-1-1)之間有多少時間間隔,等等。理解怎樣著眼於時間間隔有助於你輕鬆的理解我的不同的日期計算例子。

  1.一個月的第一天第一個例子,我將告訴你如何從當前日期去這個月的最後一天。請注意:這個例子以及這篇文章中的其他例子都將只使用DATEDIFF和DATEADD函數來計算我們想要的日期。每一個例子都將通過計算但前的時間間隔,然後進行加減來得到想要計算的日期。

  這是計算一個月第一天的SQL 腳本:SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)

  我們把這個語句分開來看看它是如何工作的。最核心的函數是getdate(),大部分人都知道這個是返回當前的日期和時間的函數。下一個執行的函數 DATEDIFF(mm,0,getdate())是計算當前日期和「1900-01-01 00:00:00.000」這個日期之間的月數。記住:時期和時間變量和毫秒一樣是從「1900-01-01 00:00:00.000」開始計算的。這就是為什麼你可以在DATEDIFF函數中指定第一個時間表達式為「0」。下一個函數是DATEADD,增加當前日期到「1900-01-01」的月數。通過增加預定義的日期「1900-01-01」和當前日期的月數,我們可以獲得這個月的第一天。另外,計算出來的日期的時間部分將會是「00:00:00.000」。

  這個計算的技巧是先計算當前日期到「1900-01-01」的時間間隔數,然後把它加到「1900-01-01」上來獲得特殊的日期,這個技巧可以用來計算很多不同的日期。下一個例子也是用這個技巧從當前日期來產生不同的日期。

  2.本周的星期一這裡我是用周(wk)的時間間隔來計算哪一天是本周的星期一。

  SELECT DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)

  3.一年的第一天現在用年(yy)的時間間隔來顯示這一年的第一天。

  SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)

  4.季度的第一天假如你要計算這個季度的第一天,這個例子告訴你該如何做。

  SELECT DATEADD(QQ, DATEDIFF(qq,0,getdate()), 0)

  5.當天的半夜曾經需要通過getdate()函數為了返回時間值截掉時間部分,就會考慮到當前日期是不是在半夜。假如這樣,這個例子使用DATEDIFF和DATEADD函數來獲得半夜的時間點。

相關焦點

  • SQL Server各種日期計算方法之一
    首頁 > 語言 > 關鍵詞 > SQL最新資訊 > 正文 SQL Server各種日期計算方法之一
  • server sql 作業 使用專題及常見問題 - CSDN
    use masterGO/* --開啟sql server代理sp_configure 'show advanced options', 1; GO RECONFIGURE; GO sp_configure 'Agent XPs', 1; GO RECONFIGURE GO*/--定義創建作業
  • SQL Server 2008中的新日期數據類型
    你是否曾經想在資料庫中存儲一個日期而沒有時間部分,或者想存儲一個時間值希望有更高的精度?在SQL Server 2008的介紹中,微軟介紹了一些新的日期數據類允許你只存儲一個日期、更高精度的時間值等。這些新的數據類型為你存儲日期和時間相關信息提供了一些附加選項。
  • 關於日期的經典SQL編程問題:生日問題
    【IT168 技術】與日期相關的第一個問題是根據某個用戶的出生日期和當前日期,計算他最近的生日。通過對這個問題的處理,演示如何通過使用日期函數來正確處理閏月。  在生日問題中,一般對閏月的處理如下:如果是閏月,那麼返回2月28日;如果不是閏月,則返回3月1日(大部分是出於法律的要求)。
  • 一個實例,學會Excel中的日期計算
    如下圖所示,是某單位的固定資產明細表,(為了便於演示,裡面的項目有所刪減),需要根據A列的啟用日期和F列的計提年限,來計算該資產在本年度中的折舊月數。已知固定資產折舊的計算規則為入帳次月開始計提,使用年限到期後的當月照提折舊,所以這裡咱們要先計算出初始折舊日期和到期日期。
  • Excel日期計算?打個響指,這個函數必須會~
    但這傢伙不但真實存在,還很實用;在工作中的應用非常廣泛,常用於計算兩個日期各種類型的差。本章概要如下▼1,基礎語法和用法。2,經典案例:以年、年月、年月日為單位計算工齡。3,小技巧:如何快速記憶第3參數。
  • excel日期函數:如何計算項目的開始和完成日期
    在上一篇文章中,我們說到了EDATE、DATEDIF、EOMONTH、WEEKDAY等日期函數,相信大家對於excel中的日期計算,已經有了一個大致的了解,今天我們繼續上篇內容,為大家帶來兩個比較冷門,但又非常好用的日期函數,一起來看看吧!
  • DATEDIF函數計算日期間隔
    DATEDIF函數DATEDIF函數其實屬於一種隱藏函數,因為這個函數在EXCEL幫助和插入公式裡面沒有,這個函數可以用來計算兩個日期之間的年、月、日間隔數。下面介紹DATEDIF函數的語法及實例演示。
  • excel表格,如何計算日期的天數或時間差
    在excel中如何單獨計算日期的天數或時間差。對於日期和時間,之間的差,例如:日期時間差的公式,結果要小時(如134.5小時),比如2016年2月10日 13:26到2016年3月6日 10:40相距多少個小時,怎麼實現呢?首先,單獨計算兩個日期之間的天數。
  • Excel日期計算的5個小技巧!
    註:MID函數用於截取某一個字符串中的內容,此處是截取身份證號的出生日期那部分;TEXT函數是使截取的那部分格式轉為日期格式。註:DATEDIF函數用於計算兩日期之間相隔的年數,月數,天數,TODAY函數用於返回當前日期,「y」為DATEDIF的第三個屬性參數
  • Excel計算日期間隔,辦公室工作注意收藏!
    有朋友詢問,在Excel中如何計算兩個日期間的時間差。那麼,今天就和大家來聊一聊Excel中日期間隔的計算方法。事實上,在Excel中日期是可以直接【相減】的。為什麼呢?因為在Excel裡,是通過使用一個序號系統來處理期的。也就是說,微軟的程式設計師,將1900年1月1日的期序號設定為1。那麼,1900年1月2的序號就是2,依此類推。
  • SQL Server datetime數據類型設計與優化誤區
    二、分析在SQL Server 2005版本中保存日期的數據類型只有兩種:datetime、smalldatetime,但是在SQL Server 2008版本中新增了一些日期數據類型:time、date、smalldatetime、datetime、datetime2、datetimeoffset,其中的date類型就能滿足我們場景中的需求了
  • excel根據出生日期自動計算(年齡、星座、生肖)的方法
    在工作辦公中,我們基本都會使用到excel軟體編輯表格,excel軟體中的函數公式可以快速的對表格裡的內容進行計算,從而大大的減輕了我們的工作量。這次小編給大家分享下,根據excel表格裡的出生日期,自動計算年齡、生肖和星座的方法。
  • Excel格式表格中日期、時間之差怎麼計算
    在Excel表格中,日期、時間都可以計算的,利用好了,可以省去大量的工作,今天小編分享在Excel中利用函數計算日期、時間差。情況一:日期計算,利用DATEDIF()函數1、計算兩個日期相差幾年,在E4單元格輸入公式:=DATEDIF(B4,C4,"y");2、計算兩個日期相差幾個月,在E54單元格輸入公式:=DATEDIF(B4,C4,"m");
  • sql學會這幾步,數據分析就能立馬掌握
    什麼,sql也能做分析?常見的數據清洗,預處理,,數據分類,數據篩選,分類匯總,以及數據透視等操作,用SQL一樣可以實現(除了可視化,需要放到Excel裡呈現)。SQL不僅可以從資料庫中讀取數據,還能通過不同的SQL函數語句直接返回所需要的結果,從而大大提高了自己在客戶端應用程式中計算的效率。但是,這個過程需要很熟練掌握SQL!
  • WPS表格根據出生日期,快速計算年齡方法
    在使用WPS表格統計然元的時候,經常會遇到計算年齡的問題,很多人不知道用哪個函數公式計算。下面小編給大家分享下設置方法:1、打開excel表格,把出生日期表格單元格設置為「日期」;2、年齡單元格統一設置為「常規」;3、在年齡單元格設置計算年齡函數公式「=(YEAR(NOW())-YEAR(A2))」,即可計算出年齡。
  • 如何計算給定日期對應的年度周數、天數及兩個日期差的年月日數...
    今天繼續講日期函數的應用實例。在眾多的日期函數中有很多巧妙的用法,我也只是把我在多年的工作中用到的拿出來加以整理,和大家分享,其實,我的這個平臺很少看到大段的講解及系統的知識講解,很多是實例、實例、還是實例,爭取讓每位朋友都能從中有所收穫,哪怕是很少的,哪怕是暫時無用的,在職場的競爭中很多就是拼的是你當初認為無用的知識。
  • 已知2020放假日期及補班日,如何計算每月工作天數
    今天就給大家分享下如何快速計算每月天數操作步驟:1、首先我們先製作一個每月開始日期和結束日期以及工作天數的表格,如下所示:這個表格內的開始日期及結束日期製作方法,再給大家普及兩個小技巧技巧一、開始日期製作首先我們在A2單元格輸入第一個月的日期:2020/1/,然後我們選擇A2:A13區域,點擊【開始】-【填充】-【序列