當前位置:首頁 » 編程語言 » sql兩個日期差額計算
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql兩個日期差額計算

發布時間: 2022-08-03 23:48:20

『壹』 在sql資料庫中如何計算兩個時間的差值請寫詳細語句和過程!!

DATEDIFF(datepart,startdate,enddate)比如:SELECT DATEDIFF(day,'2008-12-29','2008-12-30') AS DiffDate得到結果是1 datepart 參數可以是下列的值:datepart縮寫年yy, yyyy季度qq, q月mm, m年中的日dy, y日dd, d周wk, ww星期dw, w小時hh分鍾mi, n秒ss, s毫秒ms微妙mcs納秒ns

『貳』 求助,sql語句求兩個日期差

datediff函數select datediff(day,'2018-06-01','2018-06-26') 結果是25,day的位置根據實際修改,可以是MONTH YEAR HOUR等

『叄』 利用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

(3)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 年。

『肆』 SQL查詢,並計算兩欄位日期差天數

datediff(day/month/year,startdate,enddate)
日期函數:(要返回的天數/月數/年數,開始日期,結束日期)
select 1,2,datediff(day,1,2) 天數 from aa

『伍』 在Sql語句中怎樣計算出兩個日期的差值

sql語句中計算兩個日期的差值用datediff函數。

工具:sqlserver 2008 R2

步驟:

1、計算2009-06-23與2009-06-17之間的天數。語句如下:

selectdatediff(d,'2009-06-17','2009-06-23')

2、查詢結果:

『陸』 計算兩個時間相差多少年月日的sql演算法

如:起始時間 2011-1-1 截止日期 2011-2-1 兩個時間比較相差 0年1個月 如:起始時間 2010-11-1 截止日期 2011-12-1 兩個時間比較相差 1年1個月 怎麼比較才能得出~ 相差多少年 多少個月 這個當然很簡單, 一句SQL就可以了:select ltrim(datediff(yy,@dt1,@dt2))+'年'+ltrim(datediff(mm,@dt1,@dt2)%12)+'月'
但是如果連幾天也要計算呢?閑著沒事自己隨便在SQL Server下寫了寫,store proceres代碼如下,應該沒可以了:CREATE PROCEDURE GetDateDiff
@fromDate nvarchar(10),
@toDate nvarchar(10)
AS

DECLARE @YearDiff INTEGER
DECLARE @MonthDiff INTEGER
DECLARE @DayDiff INTEGER
DECLARE @ToMonth INTEGER
DECLARE @FromDay INTEGER
DECLARE @ToDay INTEGER

SET @YearDiff = LTRIM(DATEDIFF(yy, @fromDate, @toDate))
SET @MonthDiff = LTRIM(DATEDIFF(mm, @fromDate, @toDate)%12)
SET @ToMonth = Month(cast(@toDate as Datetime))
SET @FromDay = Day(cast(@fromDate as Datetime))
SET @ToDay = Day(cast(@ToDate as Datetime))
IF (@ToDay - @FromDay) < 0
BEGIN
IF (@ToMonth - 1) = 1 OR (@ToMonth - 1) = 3 OR (@ToMonth - 1) = 5 OR (@ToMonth - 1) = 7 OR (@ToMonth - 1) = 8 OR (@ToMonth - 1) = 10 OR (@ToMonth - 1) = 12
BEGIN
SET @DayDiff = 31 + @Today - @FromDay
SET @MonthDiff = @MonthDiff -1
END
ELSE
BEGIN
SET @DayDiff = 30 + @Today - @FromDay
SET @MonthDiff = @MonthDiff -1
END
END
ELSE
BEGIN
SET @DayDiff = @Today - @FromDay
END

SELECT CAST(@YearDiff AS NVARCHAR(10)) + '年' + CAST(@MonthDiff AS NVARCHAR(10)) + '月' + CAST(@DayDiff AS NVARCHAR(10)) + '日'

『柒』 在sql中,怎樣返回兩個日期的差值

這要看具體是那種資料庫了,有些資料庫中,兩個日期可以直接相減,得到的是相差的天數,也有些資料庫可以把兩個日期相減,得到的結果可以指定是相差的年數、月份數、天數、小時數、分鍾數或者秒數。

『捌』 ORACEL sql語句 兩時間欄位求差

兩個Date類型欄位:START_DATE,END_DATE,計算這兩個日期的時間差(分別以天,小時,分鍾,秒,毫秒):

天:

ROUND(TO_NUMBER(END_DATE - START_DATE))

小時:

ROUND(TO_NUMBER(END_DATE - START_DATE) * 24)

分鍾:

ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60)

秒:

ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60 * 60)

毫秒:

ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60 * 60 * 1000)

Oracle計算時間差函數 2008-08-20 10:00 兩個Date類型欄位:START_DATE,END_DATE,計算這兩個日期的時間差(分別以天,小時,分鍾,秒,毫秒): 天: ROUND(TO_NUMBER(END_DATE - START_DATE)) 小時: ROUND(TO_NUMBER(END_DATE - START_DATE) * 24) 分鍾: ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60) 秒: ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60 * 60) 毫秒: ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60 * 60 * 1000)

外加to_date與to_char函數:

ORACLE中:
select to_date('2007-06-28 19:51:20','yyyy-MM-dd HH24:mi:ss') from al;
一般SQL中:
select to_date('2007-06-28 19:51:20','yyyy-MM-dd HH:mm:ss') from al;
區別:
1、HH修改為HH24。
2、分鍾的mm修改為mi。

24 小時的形式顯示出來要用 HH24

select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from al;

select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mi:ss') from al;

to_date() function

1. 日期格式參數 含義說明

D 一周中的星期幾

DAY 天的名字,使用空格填充到 9 個字元

DD 月中的第幾天

DDD 年中的第幾天

DY 天的簡寫名

IW ISO 標準的年中的第幾周

IYYY ISO 標準的四位年份

YYYY 四位年份

YYY,YY,Y 年份的最後三位,兩位,一位

HH 小時,按 12 小時計

HH24 小時,按 24 小時計

MI 分

SS 秒

MM 月

Mon 月份的簡寫

Month 月份的全名

W 該月的第幾個星期

WW 年中的第幾個星期 1. 日期時間間隔操作

當前時間減去 7 分鍾的時間

select sysdate,sysdate - interval '7' MINUTE from al

當前時間減去 7 小時的時間

select sysdate - interval '7' hour from al

當前時間減去 7 天的時間

select sysdate - interval '7' day from al

當前時間減去 7 月的時間

select sysdate,sysdate - interval '7' month from al

當前時間減去 7 年的時間

select sysdate,sysdate - interval '7' year from al

時間間隔乘以一個數字

select sysdate,sysdate - 8 *interval '2' hour from al

2. 日期到字元操作

select sysdate,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from al

select sysdate,to_char(sysdate,'yyyy-mm-dd hh:mi:ss') from al

select sysdate,to_char(sysdate,'yyyy-ddd hh:mi:ss') from al

select sysdate,to_char(sysdate,'yyyy-mm iw-d hh:mi:ss') from al

參考 oracle 的相關關文檔 (ORACLE901DOC/SERVER.901/A90125/SQL_ELEMENTS4.HTM#48515)

3. 字元到日期操作

select to_date('2003-10-17 21:15:37','yyyy-mm-dd hh24:mi:ss') from al

具體用法和上面的 to_char 差不多。

4.TO_NUMBER
使用TO_NUMBER函數將字元轉換為數字
TO_NUMBER(char[, '格式'])

數字格式格式
9 代表一個數字
0 強制顯示0
$ 放置一個$符
L 放置一個浮動本地貨幣符
. 顯示小數點
, 顯示千位指示符

oracle中的to_date參數含義

1.日期格式參數含義說明
D 一周中的星期幾
DAY 天的名字,使用空格填充到9個字元
DD 月中的第幾天
DDD 年中的第幾天
DY 天的簡寫名
IW ISO標準的年中的第幾周
IYYY ISO標準的四位年份
YYYY 四位年份
YYY,YY,Y 年份的最後三位,兩位,一位
HH 小時,按12小時計
HH24 小時,按24小時計
MI 分
SS 秒
MM 月
Mon 月份的簡寫
Month 月份的全名
W 該月的第幾個星期
WW 年中的第幾個星期 1.日期時間間隔操作
當前時間減去7分鍾的時間
select sysdate,sysdate - interval 』7』 MINUTE from al
當前時間減去7小時的時間
select sysdate - interval 』7』 hour from al
當前時間減去7天的時間
select sysdate - interval 』7』 day from al
當前時間減去7月的時間
select sysdate,sysdate - interval 』7』 month from al
當前時間減去7年的時間
select sysdate,sysdate - interval 』7』 year from al
時間間隔乘以一個數字
select sysdate,sysdate - 8 *interval 』2』 hour from al
2.日期到字元操作
select sysdate,to_char(sysdate,』yyyy-mm-dd hh24:mi:ss』) from al
select sysdate,to_char(sysdate,』yyyy-mm-dd hh:mi:ss』) from al
select sysdate,to_char(sysdate,』yyyy-ddd hh:mi:ss』) from al
select sysdate,to_char(sysdate,』yyyy-mm iw-d hh:mi:ss』) from al
參考oracle的相關關文檔(ORACLE901DOC/SERVER.901/A90125/SQL_ELEMENTS4.HTM#48515)
3. 字元到日期操作
select to_date(』2003-10-17 21:15:37』,』yyyy-mm-dd hh24:mi:ss』) from al
具體用法和上面的to_char差不多。
4. trunk/ ROUND函數的使用
select trunc(sysdate ,』YEAR』) from al
select trunc(sysdate ) from al
select to_char(trunc(sysdate ,』YYYY』),』YYYY』) from al
5.oracle有毫秒級的數據類型
--返回當前時間 年月日小時分秒毫秒
select to_char(current_timestamp(5),』DD-MON-YYYY HH24:MI:SSxFF』) from al;
--返回當前時間的秒毫秒,可以指定秒後面的精度(最大=9)
select to_char(current_timestamp(9),』MI:SSxFF』) from al;
6.計算程序運行的時間(ms)
declare
type rc is ref cursor;
l_rc rc;
l_mmy all_objects.object_name%type;
l_start number default dbms_utility.get_time;
begin
for I in 1 .. 1000 loop
open l_rc for 'select object_name from all_objects '|| 'where object_id = ' || i;
fetch l_rc into l_mmy;
close l_rc;
end loop;
dbms_output.put_line ( round( (dbms_utility.get_time-l_start)/100, 2 ) ||' seconds ...' );
end;

『玖』 SQL sever 2008 如何根據一個表中的兩個時間計算出時間差

DATEDIFF 函數 [日期和時間]

功能
返回兩個日期之間的間隔。

語法
DATEDIFF ( date-part, date-expression-1, date-expression-2 )

date-part :
year | quarter | month | week | day | hour | minute | second |
millisecond

參數
date-part 指定要測量其間隔的日期部分。

有關日期部分的詳細信息,請參見日期部分。

date-expression-1 某一間隔的起始日期。從 date-expression-2 中減去該值,返回兩個參數之間
date-parts 的天數。

date-expression-2 某一間隔的結束日期。從該值中減去 Date-expression-1,返回兩個參數之間
date-parts 的天數。
用法:select datediff(day,'2009/4/5','2009/5/10')和select datediff(day,'2009-4-5','2009-5-10')一樣

『拾』 如何簡單地用一句SQL算一下兩個日期間相差的月份數

使用Datedif(日期1,日期2,"m")函數
DATEDIF是EXCEL中的函數,還有以下的使用方法一並教教:
1、簡要說明: 返回兩個日期之間的年\月\日間隔數

2、基本語法: =DATEDIF(開始日期,結束日期,單位代碼)

3、實例1:
題目: 計算出生日期為1973-4-1人的年齡

公式: =DATEDIF("1973-4-1",TODAY(),"Y")

結果: 33

簡要說明 當單位代碼為"Y"時,計算結果是兩個日期間隔的年數.

4、實例2:
題目: 計算日期為1973-4-1和當前日期的間隔月份數.

公式: =DATEDIF("1973-4-1",TODAY(),"M")

結果: 403

簡要說明 當單位代碼為"M"時,計算結果是兩個日期間隔的月份數.

5、實例3:
題目: 計算日期為1973-4-1和當前日期的間隔天數.

公式: =DATEDIF("1973-4-1",TODAY(),"D")

結果: 12273

簡要說明 當單位代碼為"D"時,計算結果是兩個日期間隔的天數.

5、實例4:
題目: 計算日期為1973-4-1和當前日期的不計年數的間隔天數.

公式: =DATEDIF("1973-4-1",TODAY(),"YD")

結果: 220

簡要說明 當單位代碼為"YD"時,計算結果是兩個日期間隔的天數.忽略年數差

5、實例5:
題目: 計算日期為1973-4-1和當前日期的不計月份和年份的間隔天數.

公式: =DATEDIF("1973-4-1",TODAY(),"MD")

結果: 6

簡要說明 當單位代碼為"MD"時,計算結果是兩個日期間隔的天數.忽略年數和月份之差

5、實例6:
題目: 計算日期為1973-4-1和當前日期的不計年份的間隔月份數.

公式: =DATEDIF("1973-4-1",TODAY(),"YM")

結果: 7

簡要說明 當單位代碼為"YM"時,計算結果是兩個日期間隔的月份數.不計相差年數