1. 程式人生 > >SQL如何獲得本季度第一天、一年的第一天、本月的最後一天

SQL如何獲得本季度第一天、一年的第一天、本月的最後一天

nterval 引數,具有以下設定值:

  設定 描述

  Year yy, yyyy 年

  quarter qq, q 季

  Month mm, m 月

  dayofyear dy, y 一年的日數

  Day dd, d 日

  Week wk, ww 一週的日數

  Hour hh 小時

  minute mi, n 分鐘

  second ss, s 秒
millisecond ms 毫秒

  ①本週的星期一
  
  這裡我是用周(wk)的時間間隔來計算哪一天是本週的星期一。
  
  SELECT DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)
  
  ②一年的第一天
  
  現在用年(yy)的時間間隔來顯示這一年的第一天。
  
  SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)
  
  ③季度的第一天
  
  假如你要計算這個季度的第一天,這個例子告訴你該如何做。
  
  SELECT DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)
  
  ④當天的半夜
  
  曾經需要通過getdate()函式為了返回時間值截掉時間部分,就會考慮到當前日期是不是在半夜。假如這樣,這個例子使
用DATEDIFF和DATEADD函式來獲得半夜的時間點。
  
  SELECT DATEADD(dd, DATEDIFF(dd,0,getdate()), 0)
  
  深入DATEDIFF和DATEADD函式計算
  
  你可以明白,通過使用簡單的DATEDIFF和DATEADD函式計算,你可以發現很多不同的可能有意義的日期。
  
  目前為止的所有例子只是僅僅計算當前的時間和“1900-01-01”之間的時間間隔數量,然後把它加到“1900-01-01”的
時間間隔上來計算出日期。假定你修改時間間隔的數量,或者使用不同的時間間隔來呼叫DATEADD函式,或者減去時間間隔而
不是增加,那麼通過這些小的調整你可以發現和多不同的日期。
  
  這裡有四個例子使用另外一個DATEADD函式來計算最後一天來分別替換DATEADD函式前後兩個時間間隔。

  ⑤上個月的最後一天
  
  這是一個計算上個月最後一天的例子。它通過從一個月的最後一天這個例子上減去3毫秒來獲得。有一點要記住,在Sql
Server中時間是精確到3毫秒。這就是為什麼我需要減去3毫秒來獲得我要的日期和時間。
  
  SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0))
  
  計算出來的日期的時間部分包含了一個Sql Server可以記錄的一天的最後時刻(“23:59:59:997”)的時間。
  
  ⑥去年的最後一天
  
  連線上面的例子,為了要得到去年的最後一天,你需要在今年的第一天上減去3毫秒。
  
  SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0))
  
  ⑦本月的最後一天
  
  現在,為了獲得本月的最後一天,我需要稍微修改一下獲得上個月的最後一天的語句。修改需要給用DATEDIFF比較當前
日期和“1900-01-01”返回的時間間隔上加1。通過加1個月,我計算出下個月的第一天,然後減去3毫秒,這樣就計算出了這
個月的最後一天。這是計算本月最後一天的SQL指令碼。
  
  SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))

  ⑧本年的最後一天
  
  你現在應該掌握這個的做法,這是計算本年最後一天指令碼
  
  SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0))。
  
  ⑨本月的第一個星期一
  
  好了,現在是最後一個例子。這裡我要計算這個月的第一個星期一。這是計算的指令碼。
  
  select DATEADD(wk, DATEDIFF(wk,0, dateadd(dd,6-datepart(day,getdate()),getdate())), 0)
  
  在這個例子裡,我使用了“本週的星期一”的指令碼,並作了一點點修改。修改的部分是把原來指令碼中“getdate()”部分
替換成計算本月的第6天,在計算中用本月的第6天來替換當前日期使得計算可以獲得這個月的第一個星期一。

相關推薦

阿裏雲1核 2G 40G 高效雲盤的雲服務器低99,活動還剩最後,附活動邀請鏈接

tms num IT AC config margin 服務 yun 3年 阿裏雲1核 2G 40G 高效雲盤的雲服務器低99一年,活動還剩最後幾天 雲服務器 ECS最新版 1 核 2 G 1 M帶寬 40 G 高效雲盤 新用戶專享| 限1臺 | 最低&

SQL如何獲得季度第一第一本月最後

nterval 引數,具有以下設定值:   設定 描述   Year yy, yyyy 年   quarter qq, q 季   Month mm, m 月   dayofyear dy, y 一年的日數   Day dd, d 日   Week wk, ww 一週的日數

MySQL日期獲取:本月第一本月最後上月第一上月最後下月第一下月最後.....

interval的說明: 1、當函式使用時,即interval(),為比較函式,如:interval(10,1,3,5,7); 結果為4; 原理:10為被比較數,後面1,3,

SQL Server:獲取本月最後[轉]

參數 end 參數表 diff ont 方法 獲取 bsp 天數 方法一:set @EndDate = dateadd(month, datediff(month, -1, @StoredDate), -1) @StoredDate為本月

shell指令碼獲取昨天今天本週週一本週週日本月第一本月最後

偶爾在linux上需要做指令碼,並設定指令碼按照日期來計算相關資料,這時候就涉及到日期的獲取,這裡介紹簡單的幾個重要日期的獲取,分別是昨天,今天是本週的第幾天,本週週一,本週週日,本月第一天,本月最後一天。 指令碼獲取日期並格式化,思路都是相同的,首先獲取日期,然後給出格式化表示式。 昨

oracle sql 獲取季度所有月份,上季度所有月份

sele oracle div last code col 獲取 trunc rom 上季度所有月份: SELECT TO_CHAR(ADD_MONTHS(ADD_MONTHS(TRUNC(SYSDATE, ‘YYYY‘),A * 3),-ROWNUM),‘YYYYMM‘

Hive求每最大氣溫的那 + 溫度

20140102162014010410201201060920120108122012011023200101021220010104112013010619201301081220130110232008010216200801041420070106192007010812200701102320100

Hive求每最大氣溫的那 + 溫度

bst load part order by str emp mmd num () 20140102162014010410201201060920120108122012011023200101021220010104112013010619201301081220130

輸入一個年份和天數_判斷這是哪的哪個月的第幾

public void someday(int year, int day) { int days[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; //不是閏年的時候,每個月代表的天數 int temp

C++ ,輸入5個數,讓最大值和第一 個數交換,讓最小值和最後個數交換

#include "iostream" using namespace std; int main() { const int n=6; //靈活定義陣列的大小 int

【Calendar】Calendar設定月份為本月最後

1.例如: 現在是2017年6月19日;我想設定時間為6月最後一天; 2.思路: 因為要考慮到每個月最後一天是28,29,30,還是31號所以正常思維來做很麻煩;這裡我們換一種思路: 找到上個月的第一天,這裡是:2017年7月1日;我

easyui-datagrid點選下頁直接跳轉到最後頁的可能原因

今天接到一個bug:初次進入頁面easyui-datagrid加載出第一頁的資料,點選下一頁的時候不是到第二頁而是到最後一頁。 如下圖所示:   這個bug確實讓我很鬱悶,最初以為是後臺的問題,除錯了一會兒發現跟後臺沒關係。 隨後檢查了下js程式碼,我的datagrid js

oracle獲取本週本月季度年度的第一最後

--本週select  trunc(sysdate,'d')+1 from dual;--下週一select  trunc(sysdate,'d')+7from dual; --本月select trunc(sysdate,'mm') from dual;select  last_day(trunc(sy

獲得當前日期所屬的第一最後

date 獲得 mkt 日期 時間 -m ech 當前 time echo ‘<br>本周起始時間:<br>‘;echo date("Y-m-d H:i:s",mktime(0, 0 , 0,date("m"),date("d")-date("w")

SQL Server學習記錄之獲取每月每季度每年第一最後

第一天 ediff code spa -1 指定日期 ctc 算法 datetime DECLARE@dtdatetime SET@dt=GETDATE() DECLARE@numberint SET@number=3 --1.指定日期該年的第一天或最後

php 獲取時間(今天,昨天,三內,本週,上週,本月,三年內,半年內,年內,三年內) PHP獲取上週本週上月本月季度季度時間方法大全

<?php date_default_timezone_set('PRC'); /** * 獲取最近一週,一個月,一年 * */ function getLatelyTime($type = ''){ $now = time(); $result = []; if

Oracle 獲取本週本月本年的第一最後(轉)

--本週 select trunc(sysdate, 'd') + 1 from dual; select trunc(sysdate, 'd') + 7 from dual; --本月 select trunc(sysdate, 'mm') from dual; sele

SqlServer 獲取本週本月本年的第一最後

--本週 select dateadd(WEEK, datediff(WEEK, 0, getdate()), 0); select dateadd(WEEK, datediff(WEEK, 0, getdate()), 7); --本月 select date

獲得指定月的最後第一

  獲取指定年月的第一天 /** * 獲取指定年月的第一天 * @param year * @param month * @return * @throws ParseException */ @Suppress

MySql取得日期(前一天)(前一月第一最後)

取得當天: mysql> SELECT curdate(); +------------+ | curdate() | +------------+ | 2018-11-24 | +------------+ 取得當前日期: mysql> select now