最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SQL日期的計算合集

 更新時間:2023年10月24日 09:08:48   作者:幻影123!  
在SQL Server中,時間和日期是常見的數據類型,也是數據處理中重要的一部分,本文將介紹SQL Server中一些常用的時間和日期函數,以及它們的用法和示例,感興趣的可以了解一下

前言

在SQL Server中,時間和日期是常見的數據類型,也是數據處理中重要的一部分。SQL Server提供了許多內置函數,用于處理時間和日期數據類型。這些函數可以幫助我們執(zhí)行各種常見的任務,例如從日期中提取特定的部分,計算日期之間的差異,以及將日期和時間轉換為不同的格式。本文將介紹SQL Server中一些常用的時間和日期函數,以及它們的用法和示例。

在這里插入圖片描述

一些常用的函數

GetDate獲取當天日期

select getdate()

DateFromParts自定義一個日期

select datefromparts(2023,2,28)

DateFormat轉換日期格式

SELECT DATEFORMAT(YourDateColumn, 'YYYY-MM-DD')  AS FormattedDate FROM YourTable

DateAdd函數計算日期偏移后的新日期
SQL中的DATEADD函數用于在給定的日期上添加指定的時間間隔。它的語法如下:

DATEADD(datepart, number, date)

其中,datepart參數指定要添加的時間間隔類型,例如year(年)、quarter(季度)、month(月)、day(天)、hour(小時)、minute(分鐘)或second(秒)。number參數指定要添加的時間間隔數量。date參數是要進行添加操作的日期。

下面是一些DateDADD函數使用的示例:

--1. 在當前日期上添加一天:

SELECT DATEADD(day, 1, GETDATE())

--2. 在當前日期上添加一個月:

SELECT DATEADD(month, 1, GETDATE())

--3. 在當前日期上添加一小時:

SELECT DATEADD(hour, 1, GETDATE())

--4. 在指定的日期上添加一周:

SELECT DATEADD(week, 1, '2021-01-01')

這些示例中,DATEADD函數會返回一個新的日期,該日期是在給定的日期上添加了指定的時間間隔后得到的。

DateDiff函數算時間差
在SQL中,DATEDIFF函數用于計算兩個日期之間的時間間隔。它返回兩個日期之間的差值,以指定的時間間隔單位為單位。

DATEDIFF函數的語法如下:

DATEDIFF(datepart, startdate, enddate)

其中,datepart參數指定要計算的時間間隔類型,例如year(年)、quarter(季度)、month(月)、day(天)、hour(小時)、minute(分鐘)或second(秒)。startdate和enddate參數是要計算時間間隔的兩個日期。

下面是一些示例:

  • 計算兩個日期之間的天數差:
SELECT DATEDIFF(day, '2021-01-01', '2021-02-01')
  • 計算兩個日期之間的小時差:
SELECT DATEDIFF(hour, '2021-01-01 10:00:00', '2021-01-01 12:00:00')
  • 計算兩個日期之間的月數差:
SELECT DATEDIFF(month, '2021-01-01', '2022-01-01')

這些示例中,DATEDIFF函數會返回兩個日期之間的差值,以指定的時間間隔單位為單位。

取日期的周、年、月、日等信息

DATEPART函數。DATEPART函數返回一個整數,它是日期的一部分,例如日,月和年。

以下是DATEPART函數的語法:

select DATEPART ( date_part , input_date ) 

DATEPART函數有兩個參數:

date_part是要提取的日期的一部分(參見下表中的有效日期部分)。

input_date是提取日期部分的日期。
因此,獲取一個日期的WeekNum和WeekDay可以這樣

select DATEPART ( wk ,  getdate() )  as wk
select DATEPART ( weekday ,  getdate() )  as wkd

date_part可取值:

在這里插入圖片描述

在最前面加上以下語句將每周第一天設置為周一

SET DATEFIRST 1
--
select DATEPART ( wk ,  getdate() )  as wk

--
select DATEPART ( weekday , getdate() )  as wkd

獲取日期所屬的當年的ISO標準周周序(ISO 標準周是一種將一年分為 52 或 53 周的時間計算方法,它是國際標準化組織(ISO)制定的一種時間標準。ISO 標準周的起始日期為每年的第一個周四,即該周的第一天為周四,最后一天為周三)

select DATEPART ( isowk ,  getdate() )  as iso_wk

計算本月第一天,上月第一天,去年本月第一天日期

sql中沒有現成的函數實現,我們可以分別計算當前日期的天數d,然后往前移動d天,就可以算出來當前月的第一天的日期了。還一種思路,日期實際上就是數值,我們以0作為基礎日期,0表示的日期1970年1月1日1時1分1秒,我們計算當前日期距離基礎日期0過去了多少個月,然后在基礎日期上移動相應的月份即可。
有了當前日期月份的第一天,移動一個月就得到了上個月的第一天日期,移動一年就得到了去年當月第一天的日期。

-- 本月第一天,0作為基礎日期1970-01-01 00:00:00
SELECT DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0) AS '本月第一天';

-- 上個月第一天
SELECT DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) - 1, 0) AS '上個月第一天';

-- 上個月最后一天
SELECT DATEADD(DAY, -1, DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0)) AS '上個月最后一天';

計算本周第一天,上周第一天以及上周同期

涉及到周的計算要復雜點,如何計算當前周的第一天,如何計算當前周的前一周的第一天。
對于第一個問題,我們思考先計算當前日期是周幾,比方說周三,那說明周一需要往前推2天,我們先用dateparts計算WeekDay,然后用dateadd往前推就好了。
有了本周第一天,再推一個week就出來上周第一天的日期,接著加上這周的周幾就能推出上周同期的日期。

DECLARE @Today DATE = GETDATE();
--設置周一為一周的第一天
SET DATEFIRST 1
-- 計算本周第一天
DECLARE @FirstDayOfWeek DATE = DATEADD(DAY, 1 - DATEPART(WEEKDAY, @Today), @Today);

-- 計算上周第一天
DECLARE @FirstDayOfLastWeek DATE = DATEADD(WEEK, -1, @FirstDayOfWeek);

-- 輸出結果
SELECT @FirstDayOfWeek AS '本周第一天', @FirstDayOfLastWeek AS '上周第一天';

到此這篇關于SQL日期的計算合集的文章就介紹到這了,更多相關SQL日期計算內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論

磐安县| 尼玛县| 滦平县| 宜君县| 清涧县| 筠连县| 乌兰浩特市| 广东省| 仙居县| 芷江| 岱山县| 宝坻区| 红原县| 漳州市| 新邵县| 台北市| 武陟县| 台北市| 通化市| 威远县| 石景山区| 胶南市| 墨脱县| 吉林省| 临邑县| 城口县| 安多县| 澄城县| 甘南县| 福鼎市| 来宾市| 普洱| 铜川市| 曲麻莱县| 会东县| 罗甸县| 柯坪县| 平昌县| 阳朔县| 南靖县| 镶黄旗|