T-SQL的幾個特殊用法(一)

來源:互聯網
上載者:User
一:DateAdd與DateDiff的用法。
 DateAdd(interval,number,date),通過interval格式為date加上值number
 DateDiff(interval,date1,date2),計算date1和date2之間的interval差距。
 在T-SQL中,日期類型的0表示的值是1900-01-01,可以用  select convert(datetime,0)來得出。
 那麼,如果要計算當前月的第一天的日期,該怎麼做呢?
 思路:首先,與原始日期0 DateAdd mm<月份>格式的number後,輸出的所得的mm值後月份的1號,也就是第一天。
 因此,我們可以先計算當前月與0之間的月份差:
    DateDiff(mm,0,getdate())    當前是8月份,經計算得出的結果是1303,也就是與1900-01相關1303個月。
 接著我們再在原始基礎上加上這1303個月
    DateAdd(mm,1303,0)   得出的結果是:2008-08-01 00:00:00 0000
 因此:一句SQL語句可以得出:
   select DateAdd(mm,DateDiff(mm,0,getdate()),0) as 這個月第一天
------
 同理,跟第一天,周一,第一個月,季度第一天,一年第一天都可以同樣的方式。只不過interval更改一下就可以
 例:這周的第一天:
 select DateAdd(wk,DateDiff(wk,0,getdate()),0) as 周一
 select DateAdd(yy,DateDiff(yy,0,getdate()),0) as 今年第一天
------
有一個比較特殊的,當天的半夜怎麼弄??
很簡單的,半夜不就==12點整麼,12點整不就是另外一天了嗎?
因此,
select DateAdd(dd,DateDiff(dd,0,getdate()),0) as 當天半夜
同樣的道理,當天半夜不就是另外一天的開始麼,
和這個月的第一天這些一樣,實際上當天的半夜的命題===今天的第一個小時《語文不好,感覺有點啥》
------
如果這些命題都不是提的第一天,第一小時啥的,而是最後一天,最後一小時呢???
    ^_^
------

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.