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

sql計算date類型天數差

發布時間: 2023-03-30 00:22:02

sql 怎麼獲取一個指定時間與當月天數的差值

DateDiff 函數

返回 Variant (Long) 的值,表示兩個指定日期間的時間間隔數目。

語法

DateDiff(interval, date1, date2[, firstdayofweek[, firstweekofyear]])

DateDiff 函數語法中有下列命名參數:

部分 描述
interval 必要。字元串表達式,表示用來計算date1 和 date2 的時間差的時間間隔
Date1□date2 必要;Variant (Date)。計算中要用到的兩個日期。
Firstdayofweek 可選。指定一個星期的第一天的常數。如果未予指定,則以星期日為第一天。
firstweekofyear 可選。指定一年的第一周的常數。如果未予指定,則以包含 1 月 1 日的星期為第一周。

設置

interval 參數的設定值如下:

設置 描述
yyyy 年
q 季
m 月
y 一年的日數
d 日
w 一周的日數
ww 周
h 時
n 分鍾
s 秒

firstdayofweek 參數的設定值如下:

常數 值 描述
vbUseSystem 0 使用 NLS API 設置。
vbSunday 1 星期日(預設值)
vbMonday 2 星期一
vbTuesday 3 星期二
vbWednesday 4 星期三
vbThursday 5 星期四
vbFriday 6 星期五
vbSaturday 7 星期六

常數 值 描述
vbUseSystem 0 用 NLS API 設置。
vbFirstJan1 1 從包含 1 月 1 日的星期開始(預設值)。
vbFirstFourDays 2 從第一個其大半個星期在新的一年的一周開始。
vbFirstFullWeek 3 從第一個無跨年度的星期開始。

❷ 利用SQL語句如何獲得兩個日期之間相差的天數

select TO_DATE(TO_CHAR(sysdate,'YYYYMMDD'),'YYYYMMDD') - TO_DATE(表欄位,'YYYYMMDD') from 表名;

表名和表欄位根據具體情況而定,

還有
date1為資料庫里輸入數據時的時間,date2為當前系統時間

應該是反的,date1應該是當前系統時間,date2是資料庫里輸入數據時的時間

❸ 利用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計算date類型天數差擴展閱讀:

注意事項

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(datepart,startdate,enddate)

參數

datepart

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

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

工具:sqlserver 2008 R2

步驟:

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

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

2、查詢結果:

❻ 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 計算時間差問題,要精確到天小時分鍾.

什麼資料庫啊?

sqlserver

selectcast(floor(datediff(minute,時間1,時間2)/1440)asvarchar)+'天'+

cast(floor((datediff(minute,時間1,時間2)%1440)/60)asvarchar)+'小時'+

cast(((datediff(minute,時間1,時間2))-

(floor(datediff(minute,時間1,時間2)/1440)*1440)-

(floor((datediff(minute,時間1,時間2)%1440)/60)*60))asvarchar)+'分'

from表名

剛才測試了一下:結果如下

有問題歡迎追問