SQL Server取季度首日

2021-09-25 13:31:17 字數 1054 閱讀 6169

在資料庫中以季度為單位統計業務資料時,查詢條件一般是自季度首日至當前日期,比如:

select * from 表名 where 日期字段》=季度首日 and 日期字段<=當前日期

由於季度首日的月份不一定是當前日期的月份,因此取季度首日日期比月度首日日期麻煩一些。這裡介紹兩個實現方案。

方案一:

(1)使用datediff函式,以乙個1月1日的日期為起點,計算當前日期與該起點日期之間相隔的季度數

select datediff(quarter,'1900-1-1',getdate())

(2)使用dateadd函式,在該日期起點的基礎上,加上上一步計算出來的季度數

select dateadd(quarter, datediff(quarter,'1900-1-1',getdate()),'1900-1-1')

(3)將1900-1-1這個起點日期引數簡寫為0

select dateadd(quarter, datediff(quarter,0,getdate()),0)

上面這個sql將返回季度首月的1號,如 2019-07-01 00:00:00.000。

方案二:

(1)使用datepart函式,獲取當前日期所屬的季度序號

select datepart(quarter,getdate())

返回1,2,3,4這樣的季度序號。

(2)使用季度號計算季度首月的月份

季度首月 = (季度號-1)*3+1 = 季度號*3 - 2

即:select (datepart(quarter,getdate())*3-2)

(3)用當前年度、季度首月月份、1日,拼成乙個日期

先使用datepart(year,...) 獲取當前年度,拼接年月日,再轉成date型:

select convert(date,convert(varchar,datepart(year,getdate())) + '-' + convert(varchar,datepart(quarter,getdate())*3-2) +'-1')

上面這個sql語句同樣返回 2019-07-01 這樣的季度首日日期。

sqlserver隨機取記錄

sqlserver隨機取記錄 2009年03月09日 星期一 下午 06 03 sqlserver本身並沒有提供隨機讀取記錄的功能,但我們可以通過一些方法來實現這個目的。本文介紹了其中幾種方法並比較了各自的優劣。方法一 直接通過sql語句實現,如 select top n from tablea o...

SQL Server 取日期時間

select datename year,getdate datename month,getdate datename day,getdate 另外,datename 還可以獲得到小時 時間 秒 星期幾 第幾周,分別如下 select datename hour,getdate select da...

ORACLE時間欄位取年 月 日 季度

oracle時間欄位取年 月 日 季度 得到年月,日,季度 select to char 日期,yyyymmdd date id,to char 日期,yyyy 年 to char 日期,mm 月 to char 日期,dd 日 date name,to char 日期,yyyymm month i...