欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SQL日期的計算合集

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

前言

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

在這里插入圖片描述

一些常用的函數(shù)

GetDate獲取當天日期

select getdate()

DateFromParts自定義一個日期

select datefromparts(2023,2,28)

DateFormat轉(zhuǎn)換日期格式

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

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

DATEADD(datepart, number, date)

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

下面是一些DateDADD函數(shù)使用的示例:

--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函數(shù)會返回一個新的日期,該日期是在給定的日期上添加了指定的時間間隔后得到的。

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

DATEDIFF函數(shù)的語法如下:

DATEDIFF(datepart, startdate, enddate)

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

下面是一些示例:

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

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

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

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

以下是DATEPART函數(shù)的語法:

select DATEPART ( date_part , input_date ) 

DATEPART函數(shù)有兩個參數(shù):

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中沒有現(xiàn)成的函數(shù)實現(xiàn),我們可以分別計算當前日期的天數(shù)d,然后往前移動d天,就可以算出來當前月的第一天的日期了。還一種思路,日期實際上就是數(shù)值,我們以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);

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

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

相關文章

  • 關于SQL Server加密與解密的問題

    關于SQL Server加密與解密的問題

    這篇文章主要介紹了SQL Server加密與解密的相關知識,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • 最新評論