在資料庫中以季度為單位統計業務資料時,查詢條件一般是自季度首日至當前日期,比如:
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...