A. sql日期計算間隔多少天
取出期間的每一天(DATEDIFF),判斷下是2月(DATEPART)就加1,OK?
B. sql 計算天數
把你這個翻譯成sql就是了,不過貌似應該是
不算今天:有效天數=有效期+生產日期-當前日期-1
select (validdate+makedate-today-1) as vd
from tablename
C. 利用SQL語句如何獲得兩個日期之間相差的天數
select TO_DATE(TO_CHAR(sysdate,'YYYYMMDD'),'YYYYMMDD') - TO_DATE(表欄位,'YYYYMMDD') from 表名;
表名和表欄位根據具體情況而定,
還有
date1為資料庫里輸入數據時的時間,date2為當前系統時間
應該是反的,date1應該是當前系統時間,date2是資料庫里輸入數據時的時間
D. sql 怎麼計算兩個時間的天數
select datediff(part,StartDate,EndDate)
part:日期的哪一部分計算差額的參數
StartDate:開始時間
EndDate:截至時間
如:select datediff(dd,'2010-09-20','2010-09-21')
結果:1
即兩個日期相差1天;
select datediff(mm,'2010-09-20','2010-09-21')
結果:0
即兩個日期都是同月。
E. sql計算時間差的datediff函數怎麼用
簡單介紹一下datediff()函數。
定義和用法
DATEDIFF() 函數返回兩個日期之間的天數。
語法
DATEDIFF(datepart,startdate,enddate)
startdate 和 enddate 參數是合法的日期表達式。
datepart 參數可以是下列的值:
計算相差的天數:
select DATEDIFF(DAY,'2013-10-12 10:25:52.400','2013-10-19 00:25:52.400') as '時間差'
備註:更改日期後面的時間不影響相差天數的輸出結果
計算相差的小時數:
select DATEDIFF(HOUR,'2013-10-12 10:25:52.400','2013-10-12 23:25:53.400') as '時間差'
備註:分鍾的改變不能影響計算結果
F. 利用SQL語句如何獲得兩個日期之間相差的天數
用sysdate假設結束日期欄位是end_date
添加這個判斷條件:
where to_char("end_date",'YYYY') = to_char(sysdate,'YYYY') 判斷年相同
and to_char("end_date",'MM') = to_char(sysdate,'MM') 判斷月相同
and to_char("end_date",'dd') - to_char(sysdate,'dd') = 15 判斷日相同
或者:
where to_char("end_date",'YYYY-MM-DD') - to_char(sysdate,'YYYY-MM-DD')=15
(6)sql計算日期之間天數擴展閱讀:
注意事項
DATEDIFF返回跨兩個指定日期的日期和時間邊界數。
語法:DATEDIFF ( datepart , startdate , enddate )
參數:datepart
是規定了應在日期的哪一部分計算差額的參數。下表列出了 Microsoft® SQL Server™ 識別的日期部分和縮寫。
startdate是返回datetime或smalldatetime值或日期格式字元串的表達式。 因為smalldatetime只精確到分鍾,所以當用smalldatetime值時,秒和毫秒總是 0。
如果只指定年份的最後兩位數字,則小於或等於"兩位數年份截止期"配置選項的值的最後兩位數字的數字所在世紀與截止年所在世紀相同。大於該選項的值的最後兩位數字的數字所在世紀為截止年所在世紀的前一個世紀。例如,如果 two digit year cutoff 為 2049(默認),則 49 被解釋為 2049,2050 被解釋為 1950。為避免模糊,請使用四位數的年份。
有關時間值指定的更多信息,請參見時間格式。有關日期指定的更多信息,請參見 datetime 和 smalldatetime。
enddate是計算的終止日期。enddate 是返回 datetime 或 smalldatetime 值或日期格式字元串的表達式。
返回類型:integer
注釋:startdate 是從 enddate 減去。如果 startdate 比 enddate 晚,返回負值。當結果超出整數值范圍,DATEDIFF 產生錯誤。對於毫秒,最大數是 24 天 20 小時 31 分鍾零 23.647 秒。對於秒,最大數是 68 年。
G. SQL中怎麼計算兩日期之間的天數
按小時統計,符合條件的為一天
小時數=select datediff(hh,'2007-10-12 9:00:00','2007-10-12 18:00:00')
H. sql語句中可以查詢兩個日期之間的天數么
select datediff('2009-1-1', '2008-1-1');
用datediff函數,第一個參數是截止時間,第二個參數是起始時間
不好意思,剛才的是mysql,剛看了下sql的文檔發現有點區別- -,sql的話,用下面的形式:
DATEDIFF ( datepart , startdate , enddate )
所以你要求2個日期之間間隔的天數,這樣寫:
datediff( dd, '2008/1/1', '2009/1/2' )
這里的dd表示計算天數差
I. SQL語句計算兩個日期之間有多少個工作日的方法
/*
因為工作中一個奇怪的需求,要用SQL語言計算兩個日期間有多少個工作日。
設定是一個星期有5個工作日,從星期一到星期五
說明:
第一個星期的工作日數:DATEPART(dw, @begdt)-DATEPART(dw, @begdt),最少0天
末一個星期的工作日數:DATEPART(dw, @enddt),最多5天
計算方法:
如果兩個日期處在同一個星期內,直接計算「第一個星期的工作日數」
否則按下面的公式計算
(兩個日期間的總天數 - 第一個星期的天數 - 末一個星期的天數) / 7 * 5
+ 第一個星期的工作日數
+ 末一個星期的工作日數
*/
--計算並返回兩個日期間的工作小時數(工作日*8)按周一到周五計算
--必須先SET DATEFIRST 1
CREATE FUNCTION dbo.CalcWorkHours(@bdate DATETIME, @edate DATETIME)
RETURNS INTEGER
AS BEGIN
DECLARE @hours INTEGER
IF @@DATEFIRST <> 1 OR @bdate > @edate
RETURN -1
SELECT @hours =
--如果終止日期與起始日期在同一個星期內,只需要計算有幾天即可
CASE WHEN DATEPART(wk, @edate-1)-DATEPART(wk,@bdate) = 0 THEN
CASE WHEN DATEPART(dw, @bdate) > 5 THEN 0
WHEN DATEPART(dw, @edate-1) > 5 THEN 6 - DATEPART(dw, @bdate)
ELSE DATEPART(dw, @edate-1) - DATEPART(dw, @bdate) + 1 END
--如果終止日期與起始日期在不同的星期內
--首先計算出除前後兩個星期外完整的星期數 * 5
ELSE (DATEDIFF(dd,@bdate,@edate)
- (8-DATEPART(dw, @bdate))
- DATEPART(dw, @edate-1)) / 7 * 5
--再加上第一個星期里的工作日數
+ CASE WHEN DATEPART(dw, @bdate) < 6 THEN 6 - DATEPART(dw, @bdate)
ELSE 0 END
--加上末一個星期里的工作日數
+ CASE WHEN DATEPART(dw, @edate-1)>5 THEN 5 ELSE DATEPART(dw, @edate-1) END
END * 8
RETURN @hours
END
J. 用T-SQL語言日期函數,查詢從自己出生日期至今天的天數
select
dateafter(出生日期,
getdate()
)
DaysAfter()
功能得到兩個日期間的天數。
語法DaysAfter
(
date1,
date2
)
參數date1:date類型,指定起始日期date2:date類型,指定終止日期返回值Long。函數執行成功時得到兩個日期之間的天數。如果date2的日期在date1的前面,那麼DaysAfter()函數返回負值。如果任何參數的值為NULL,則DaysAfter()函數返回NULL。