①DATEADD\DAY\DATEDIFF\GETDATE\DATENAME等函式的用法.
②想查詢2007年2月9日的付款流水有單筆交易出現多張小票號的情況的小票號,該用什麼語句?
提問者: 420329630 - 助理 二級
最佳答案
1.DateAdd ( I , N , D )
將一個日期加上一段期間後的日期。 I :設定一個日期( Date )所加上的一段期間的單位。譬如 interval="d" 表示 N的單位為日。 I的設定值如下:
yyyy Year 年
q Quarter 季
m Month 月
d Day 日
w Weekday 星期
h Hour 時
n Minute 分
s Second 秒
N :數值表示式,設定一個日期所加上的一段期間,可為正值或負值,正值表示加(結果為 >date 以後的日期),負值表示減(結果為 >date 以前的日期)。
D :待加減的日期。
例子: DateAdd ( "m" , 1 , "31-Jan-98")
結果: 28-Feb-98
說明:將日期 31-Jan-98 加上一個月,結果為 28-Feb-98 而非 31-Fe-98 。
例子: DateAdd ( "d" , 20 , "30-Jan-99")
結果: 1999/2/9
說明:將一個日期 30-Jan-99 加上 20 天后的日期。
2.Day( 日期的字串或表示式 )
傳回日期的「日」部份。
例子: Day(" 12/1/1999 ")
結果: 1
3.DateDiff (I , D1 , D2[,FW[,FY]])
計算兩個日期之間的期間。
I :設定兩個日期之間的期間計算之單位。譬如 >I="m" 表示計算的單位為月。 >I 的設定值如:
yyyy > Year 年
q Quarter 季
m Month 月
d Day 日
w Weekday 星期
h Hour 時
n Minute 分
s Second 秒
D1 ,D2:計算期間的兩個日期表示式,若 >date1 較早,則兩個日期之間的期間結果為正值;若 >date2 較早, 則結果為負值。
FW :設定每週第一天為星期幾, 若未設定表示為星期天。 >FW 的設定值如下:
0 使用 >API 的設定值。
1 星期天
2 星期一
3 星期二
4 星期三
5 星期四
6 星期五
7 星期六
FY :設定一年的第一週, 若未設定則表示一月一日那一週為一年的第一週。 >FY 的設定值如下:
0 使用 >API 的設定值。
1 一月一日那一週為一年的第一週
2 至少包括四天的第一週為一年的第一週
3 包括七天的第一週為一年的第一週
例子: DateDiff ("d","25-Mar-99 ","30-Jun-99 ")
結果: 97
說明:顯示兩個日期之間的期間為 97 天
想查詢2007年2月9日的付款流水有單筆交易出現多張小票號的情況的小票號
這個要看一下你的表結構是什麼樣的啊?
回答者:qqsmalltiger - 助理 二級 3-3 23:45
評價已經被關閉 目前有 0 個人評價
好
50% (0) 不好
50% (0)
其他回答 共 1 條
DATEADD
在向指定日期加上一段時間的基礎上,返回新的 datetime 值。
語法
DATEADD ( datepart , number, date )
DATEDIFF
返回跨兩個指定日期的日期和時間邊界數。
語法
DATEDIFF ( datepart , startdate , enddate )
GETDATE
按 datetime 值的 Microsoft® SQL Server? 標準內部格式返回當前系統日期和時間。
語法
GETDATE ( )
DATENAME
返回代表指定日期的指定日期部分的字串。
語法
DATENAME ( datepart , date )
SQL日期計算
通常,你需要獲得當前日期和計算一些其他的日期,例如,你的程式可能需要判斷一個月的第一天或者最後一天
。你們大部分人大概都知道怎樣把日期進行分割(年、月、日等),然後僅僅用分割出來的年、月、日等放在幾
個函式中計算出自己所需要的日期!在這篇文章裡,我將告訴你如何使用DATEADD和DATEDIFF函式來計算出在你
的程式中可能你要用到的一些不同日期。
在使用本文中的例子之前,你必須注意以下的問題。大部分可能不是所有例子在不同的機器上執行的結
果可能不一樣,這完全由哪一天是一個星期的第一天這個設定決定。第一天(DATEFIRST)設定決定了你的系統
使用哪一天作為一週的第一天。所有以下的例子都是以星期天作為一週的第一天來建立,也就是第一天設定為7
。假如你的第一天設定不一樣,你可能需要調整這些例子,使它和不同的第一天設定相符合。你可以通過
@@DATEFIRST函式來檢查第一天設定。
為了理解這些例子,我們先複習一下DATEDIFF和DATEADD函式。DATEDIFF函式計算兩個日期之間的小時、
天、周、月、年等時間間隔總數。DATEADD函式計算一個日期通過給時間間隔加減來獲得一個新的日期。要了解
更多的DATEDIFF和DATEADD函式以及時間間隔可以閱讀微軟聯機幫助。
使用DATEDIFF和DATEADD函式來計算日期,和本來從當前日期轉換到你需要的日期的考慮方法有點不同。
你必須從時間間隔這個方面來考慮。比如,從當前日期到你要得到的日期之間有多少時間間隔,或者,從今天到
某一天(比如1900-1-1)之間有多少時間間隔,等等。理解怎樣著眼於時間間隔有助於你輕鬆的理解我的不同的
日期計算例子。
一個月的第一天
第一個例子,我將告訴你如何從當前日期去這個月的最後一天。請注意:這個例子以及這篇文章中的其
他例子都將只使用DATEDIFF和DATEADD函式來計算我們想要的日期。每一個例子都將通過計算但前的時間間隔,
然後進行加減來得到想要計算的日期。
這是計算一個月第一天的SQL 指令碼:
SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)
我們把這個語句分開來看看它是如何工作的。最核心的函式是getdate(),大部分人都知道這個是返回當
前的日期和時間的函式。下一個執行的函式DATEDIFF(mm,0,getdate())是計算當前日期和“1900-01-01
00:00:00.000”這個日期之間的月數。記住:時期和時間變數和毫秒一樣是從“1900-01-01 00:00:00.000”開
始計算的。這就是為什麼你可以在DATEDIFF函式中指定第一個時間表示式為“0”。下一個函式是DATEADD,增加
當前日期到“1900-01-01”的月數。通過增加預定義的日期“1900-01-01”和當前日期的月數,我們可以獲得這
個月的第一天。另外,計算出來的日期的時間部分將會是“00:00:00.000”。
這個計算的技巧是先計算當前日期到“1900-01-01”的時間間隔數,然後把它加到“1900-01-01”上來
獲得特殊的日期,這個技巧可以用來計算很多不同的日期。下一個例子也是用這個技巧從當前日期來產生不同的
日期。
本週的星期一
這裡我是用周(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函式計算
SQL中時間函式總結(一)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-612110/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL時間函式總結(二)SQL函式
- MySql中時間和日期函式MySql函式
- SQL Server函式總結SQLServer函式
- linux中時間相關的函式介紹Linux函式
- pandas中時間窗函式rolling的使用函式
- SQL中時間的加減法SQL
- Sql時間函式SQL函式
- js常見函式總結(一)JS函式
- T-SQL——函式——時間操作函式SQL函式
- php函式總結PHP函式
- Oracle 函式總結Oracle函式
- SQL語句中聚合函式忽略NULL值的總結SQL函式Null
- STL區間成員函式及區間演算法總結函式演算法
- Flink1.17 版本常見的 SQL 函式總結SQL函式
- mysql日期函式總結MySql函式
- PHP常用函式總結PHP函式
- Oracle常用函式總結Oracle函式
- php 常用函式總結PHP函式
- php中時間戳PHP時間戳
- SQL SERVER 時間和日期函式SQLServer函式
- Sql Server函式全解(4):日期和時間函式SQLServer函式
- Sql Server函式全解(四)日期和時間函式SQLServer函式
- SAP ABAP 函式總結 常用函式解釋函式
- Sql Server函式全解(一)字串函式SQLServer函式字串
- Sql server中時間查詢的一個比較快的語句(轉)SQLServer
- 總結一些常用的陣列函式陣列函式
- Oracle中的時間函式用法(to_date、to_char) (總結)Oracle函式
- Sigmoid函式總結Sigmoid函式
- 總結常用的字串函式字串函式
- mysql函式全面總結KSVMMySql函式
- ORACLE 實用函式總結Oracle函式
- loadrunner常用函式總結函式
- 函式呼叫規則總結函式
- Oracle分析函式使用總結Oracle函式
- [28期] 字串函式總結字串函式
- JavaScript Function 函式深入總結JavaScriptFunction函式
- JS函式驗證總結JS函式
- Sql Server系列:日期和時間函式SQLServer函式