SQL Server時間粒度系列----第1節時間粒度概述

来源:http://www.cnblogs.com/dzy863/archive/2016/01/06/5105442.html
-Advertisement-
Play Games

本文目錄列表:1、什麼是時間粒度?2、SQL Server提供的時間粒度3、SQL Server時間粒度代碼演示 4、SQL Server基準日期5、總結語6、參考清單列表什麼是時間粒度? 我們知道比如年、季度、月、旬(一個月分為上中下3旬)、日這樣的時間單位;也知道小時、分鐘、秒;也有短於秒的比....


本文目錄列表: 1、什麼是時間粒度?
2、SQL Server提供的時間粒度
3、SQL Server時間粒度代碼演示   4、SQL Server基準日期 5、總結語
6、參考清單列表   什麼是時間粒度?        我們知道比如年、季度、月、旬(一個月分為上中下3旬)、日這樣的時間單位;也知道小時、分鐘、秒;也有短於秒的比如毫秒、微妙、納秒、飛秒等等時間單位。基於不同的時間,我們可以將時間粒度看作不同時間單位的時間值。       舉個例子來說明時間粒度這個問題。一個日期時間值是'2016-02-29',很顯然我們知道這個日期所對應的年、月、日分別為2016年、2月和29日,這個29日就是2016年2月第29天(日)。我們也可以繼續根據這個日期時間值發問以下的問題:此日期屬於2016年第幾周?此日期屬於所在周的星期幾?此日期屬於2016年2月的那個旬?此日期屬於2016年的第幾季度?此日期 又屬於所在季度的第幾天?此日期屬於2016年的上半年還是下半年?此日期屬於2016年的第幾天?……          有些公司會有自己公司特殊的財務處理周期時間段,比如說:4個月、4個月、3個月為不同時間段的財務處理周期。   SQL Server提供的時間粒度       我們來看看SQL Server提供了那些日期時間數據類型,smalldatetime和datetime(SQL Server 2005提供的),後來在SQL Server 2008又新增了date、time、datetime2和datetimeoffset共4個數據類型。以上6種日期時間數據類型用法和區別請參考日期和時間數據類型及函數 (Transact-SQL)          SQL Server針對這些日期時間數據類型的具體一個日期時間值都能得到那些時間粒度呢?我們可以通過datepart函數(https://msdn.microsoft.com/zh-cn/library/ms189794(v=sql.90).aspxhttps://msdn.microsoft.com/zh-cn/library/ms174420(v=sql.100).aspx)可以知道。下麵的表格彙總了datepart函數將獲得指定日期時間值的哪些時間粒度值:
日期部分 縮寫 SQL Server運行版本
year yy,yyyy SQL Server 2005 +
quarter qq,q SQL Server 2005 +
month mm,m SQL Server 2005 +
dayofyear dy,y SQL Server 2005 +
day dd,d SQL Server 2005 +
week wk,ww SQL Server 2005 +
weekday dw SQL Server 2005+
hour hh SQL Server 2005 +
minute mi,n SQL Server 2005 +
second ss,s SQL Server 2005 +
millisecond ms SQL Server 2005 +
microsecond mcs SQL Server 2008 +
nanosecond ns SQL Server 2008 +
TZoffset tz SQL Server 2008 +
ISO_WEEK isowk,isoww SQL Server 2008 +
註意:SQL Server 2005 +表示的意思是:SQL Server 2005以及SQL Server 2005以上版本。   SQL Server時間粒度代碼演示     1、日期以上時間粒度的T-SQL代碼如下:
 1 -- 日期以上時間粒度的T-SQL代碼:
 2 DECLARE    @dtmCreateTime AS DATETIME;
 3 SET @dtmCreateTime = '2016-02-29 23:59:59.997';
 4 SELECT DATEPART(YEAR, @dtmCreateTime) AS 'Year,yy,yyyy CurrentYear';
 5 SELECT DATEPART(QUARTER, @dtmCreateTime) AS 'Quarter,qq,q CurrentQuarter';
 6 SELECT DATEPART(MONTH, @dtmCreateTime) AS 'Month,mm,m CurrentMonth';
 7 SELECT DATEPART(DAYOFYEAR, @dtmCreateTime) AS 'DayOfYear,dy,y DayOfCurrentYear';
 8 SELECT DATEPART(DAY, @dtmCreateTime) AS 'Day,dd,d DayOfCurrentMonth';
 9 SELECT DATEPART(WEEK, @dtmCreateTime) AS 'Week,wk,ww WeekOfCurrentYear', @@DATEFIRST AS 'FisrtDayOfWeek[可以為1到7,sunday對應的7]', DATEPART(WEEKDAY, @dtmCreateTime) AS 'Weekday,dw WeekdayOfCurrentWeek', DATENAME(WEEKDAY, @dtmCreateTime) AS 'WeekdayName';
10 GO

 

執行後的查詢結果如下:   2、時間以下的時間粒度的T-SQL代碼:
1 -- 時間以下時間粒度的T-SQL代碼:
2 DECLARE    @dtmCreateTime AS DATETIME;
3 SET @dtmCreateTime = '2016-02-29 23:59:59.997';
4 SELECT DATEPART(HOUR, @dtmCreateTime) AS 'Hour,hh HourOfDay', DATEPART(MINUTE, @dtmCreateTime) AS 'Minute,mi,n MinuteOfDay', DATEPART(SECOND, @dtmCreateTime) AS 'Second,ss,s SecondOfDay',  DATEPART(MILLISECOND, @dtmCreateTime) AS 'Millisecond,ms MillisecondOfDay';
5 SELECT DATEPART(MICROSECOND, @dtmCreateTime) AS 'Mircosecond,mcs MicrosecondOfDay', DATEPART(NANOSECOND, @dtmCreateTime) AS 'Nanosecond,ns NanosecondOfDay';
6 GO

 

執行後的查詢結果如下:

    3、時區偏移TZOFFSET時間粒度的T-SQL代碼:
1 -- 時區偏移TZOFFSET時間粒度的T-SQL代碼:
2 DECLARE @dtmofsDateTime AS DATETIMEOFFSET;
3 SET @dtmofsDateTime = '2007-05-10  00:00:01.1234567 +05:10'
4 SELECT DATEPART (TZOFFSET, @dtmofsDateTime) AS 'TZoffset,tz TZoffsetMinuteTotal';
5 GO

 

執行後的查詢結果如下:   4、 ISO_WEEK時間粒度的T-SQL代碼:
1 -- ISO_WEEK時間粒度的T-SQL代碼:
2 SELECT DATEPART(ISO_WEEK, '2016-01-06') AS 'ISO_WEEK,isowk,isoww ISO_WeekValue'
3 GO

 

執行後的查詢結果如下:   註意:以下文字摘抄自SQL Server聯機幫助,具體請參考:https://msdn.microsoft.com/zh-cn/library/ms174420(v=sql.100).aspx

ISO 8601 包括 ISO 周-日期系統,即周的編號系統。每周都與該周內星期四所在的年份關聯。例如,2004 年第 1 周 (2004W01) 從 2003 年 12 月 29 日星期一到 2004 年 1 月 4 日星期天。一年中最大的周數可能為 52 或 53。這種編號方式通常用於歐洲國家/地區,但其他國家/地區很少用到。

不同的國家/地區的編號系統可能不符合 ISO 標準。現在至少可能存在六種編號系統,如下表所示:

每周的第一天

一年的第一周包含

分配兩次的周

使用的國家/地區

星期日

1 月 1 日,

第一個星期六,

其中有 1–7 天屬於此年

美國

星期一

1 月 1 日,

第一個星期日,

其中有 1–7 天屬於此年

大多數歐洲國家和英國

星期一

1 月 4 日,

第一個星期四,

其中有 4-7 天屬於此年

ISO 8601,挪威和瑞典

星期一

1 月 7 日,

第一個星期一,

7 天均屬於此年

 

星期三

1 月 1 日,

第一個星期二,

其中有 1–7 天屬於此年

 

星期六

1 月 1 日,

第一個星期五,

其中有 1–7 天屬於此年

 
  SQL Server基準日期
      我們執行下麵的T-SQL代碼:
1 SELECT DATEPART(YEAR, 0) AS 'BaseDateYear', DATEPART(MONTH, 0) AS 'BaseDateMonth', DATEPART(DAY, 0) AS 'BaseDateDay';
2 SELECT YEAR(0) AS 'BaseDateYear', MONTH(0) AS 'BaseDateMonth', DAY(0) AS 'BaseDateDay';
3 GO

 

執行後的查詢結果如下:       從上面的查詢結果我們可以知道datepart(year, @dtmDateTime)、datepart(month, @dtmDateTime)、datepart(day, @dtmDateTime)分別與year(@dtmDateTime)、month(@dtmDateTime)、day(@dtmDateTime)獲得的結果值相同。這個日期“1900-01-01”就是SQL Server提供的基準日期(SQL Server聯機幫助成為基準年)。有關這個基準日期的一種特殊用法,就是數據表設計的一種方法消除NULL,將欄位設置為NOT NULL加預設值。針對日期時間數據類型欄位列的預設值就可以設置為這個“1900-01-01”基準日期。       SQL Server提供的datetime日期時間數據類型,內部使用兩個4位元組的整數來存儲該數據值。第一個4位元組存儲”基準日期“(即1900年1月1日)之前或之後的天數。基準日期是系統參照日期。另一個4位元組存儲天的時間,以午夜後經過的1/300秒數表示。SQL Server引擎也是以“1900-01-01”這個基準日期來參考使用的。具體的請參考日期和時間 (Transact-SQL)。       後面的博文會更多的使用這個基準日期的。       總結語          我們在本文中瞭解了有關時間粒度的概述,還有SQL Server提供了那些類型的時間粒度,以及各個時間粒度的T-SQL代碼演示,最後我們知道SQL Server 提供了一個基準日期(基準年)“1900-01-01“。   參考清單列表 1、http://baike.baidu.com/link?url=EwLlbVIkgcS3qxQCCdGgM5LfKjufP0-EHyUUOpRyrNoBONePh2NzJszzQvMGQrZOHJ9f8SPA6iBcwk93uR4_OK 2、https://msdn.microsoft.com/zh-cn/library/ms174420(v=sql.90).aspx 3、https://msdn.microsoft.com/zh-cn/library/ms174420(v=sql.100).aspx 4、https://msdn.microsoft.com/zh-cn/library/ms186724(v=sql.100).aspx 5、https://msdn.microsoft.com/zh-cn/library/ms174395(v=sql.90).aspx 6、https://msdn.microsoft.com/zh-cn/library/ms187819(v=sql.90).aspx

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Linux系統調用--getrusage函數詳解功能描述:獲得進程的相關資源信息。如:用戶開銷時間,系統開銷時間,接收的信號量等等;用法:#include #include #include #define RUSAGE_SELF 0#define RUSAGE_CHILDREN -1int get...
  • 一,nfs服務優缺點 NFS 是Network File System的縮寫,即網路文件系統,可以讓不同的客戶端掛載使用同一個目錄,作為共用存儲使用,這樣可以保證不同的節點客戶端數據一致性,在集群架構中經常用到 NFS優點:簡單、方便、可靠、穩定 NFS缺點: 1、存在單點故障 2...
  • 創建資料庫: 1 CREATE DATABASE Test --要創建的資料庫名稱 2 ON PRIMARY 3 ( 4 --資料庫文件的具體描述 5 NAME='Test_data', --主數據文件的邏輯名稱...
  • Convert函數和Cast函數都是轉化函數,效果是一樣的。cast函數,轉化,如果轉化之後,年齡還是Null的話,就顯示為“未知”Convert函數和Cast函數都是轉化函數,效果是一樣的。
  • 相信大家認真看完這篇文章就會知道怎麼去設計出高級的資料庫了!!!最近有朋友一直問我為什麼需要規範的的資料庫設計?專業人士解析:因為在實際的項目開發中,如果系統的數據存儲量較大,設計的表比較多,表和表之間的關係比較複雜,就需要首先考慮規範的資料庫設計,然後進行具體的創建庫,創建表的工作,不管是創建動....
  • 創建了一個外鍵,還有一點限制,就是當定義了ON Update/Delete CASCADE 的時候,該表不能再定義Instand Of Update/Delete 觸發器。這個是不允許的。如果定義了Instand Of觸發器改變了 Update 或者 Delete 的行為,那麼在級聯刪除的時候,引用...
  • 一.mongodb replication 介紹 官網上的第一句話就是Replication is the process of synchronizing data across multiple servers.翻譯過來就是replication(複製)是跨多個伺服器同步的過程,基本原理就是一....
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...