T SQL的幾個特殊用法 一)

2022-02-10 19:18:10 字數 1136 閱讀 1636

一: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 當天半夜

同樣的道理,當天半夜不就是另外一天的開始麼,

和這個月的第一天這些一樣,實際上當天的半夜的命題===今天的第乙個小時《語文不好,感覺有點啥》

------

如果這些命題都不是提的第一天,第一小時啥的,而是最後一天,最後一小時呢???

^_^------

C語言巨集的特殊用法和幾個坑

2 years ago source 總結一下c語言中巨集的一些特殊用法和幾個容易踩的坑。由於本文主要參考gcc文件,某些細節 如巨集引數中的空格是否處理之類 在別的編譯器可能有細微差別,請參考相應文件。巨集僅僅是在c預處理階段的一種文字替換工具,編譯完之後對二進位制 不可見。基本用法如下 1.標示...

幾個有用的T SQL 1

清除所有表記錄,有點像reset,保留constraints與identities.disable constraints triggersexec sp msforeachtable alter table nocheck constraint all exec sp msforeachtable...

T SQL中Case的用法

case語句是條件判斷語句的一種,可以完成比if語句更強的判斷,可以解決if語句中巢狀過多的問題。語法 case when 條件a then 結果a when 條件b 結果b else 結果n end 和decode 不同的是,decode 只能針對固定的值,而 case 可以用不是固定值,需是乙個...