⑴ 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兩個時間計算出間隔時間的問題。
declare@DMtimeint
declare@Dvarchar(10)
declare@Hvarchar(10)
declare@Mvarchar(10)
declare@Svarchar(10)
set@DMtime=DATEDIFF(SECOND,'2013-08-2016:40:23','2013-08-2416:05:05')
--獲取兩個時間段的秒的相差值
set@D=@DMtime/(3600*24)--天數
set@H=(@DMtime-@D*3600*24)/3600--小時
set@M=(@DMtime-@D*3600*24-@H*3600)/60--分鍾
set@S=@DMtime-@D*3600*24-@H*3600-@M*60--秒
select@D+N'天
小時
分鍾
秒'
效果圖如下:
⑶ 利用SQL語句如何獲得兩個日期之間相差的天數
select TO_DATE(TO_CHAR(sysdate,'YYYYMMDD'),'YYYYMMDD') - TO_DATE(表欄位,'YYYYMMDD') from 表名;
表名和表欄位根據具體情況而定,
還有
date1為資料庫里輸入數據時的時間,date2為當前系統時間
應該是反的,date1應該是當前系統時間,date2是資料庫里輸入數據時的時間
⑷ 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表名
剛才測試了一下:結果如下
有問題歡迎追問
⑸ 在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 計算兩個日期相差多少年月日
如:起始時間
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
procere
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是計算兩個日期相差多少天數的函數
SQL是高級的非過程化編程語言,一般針對資料庫進行操作。
定義:datediff(day/month/year,startdate,enddate)
日期函數:(要返回的天數/月數/年數,開始日期,結束日期)
具體形式:
select 1,2,datediff(day,1,2) 天數 from aa
⑻ 計算兩個時間相差多少年月日的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計算時間差
語法:DATEDIFF(開始時間,結束時間)
釋義:DATEDIFF可以計算開始時間與結束時間的時間差,結果是天數
栗子:
語法:TIMESTAMPDIFF(時間粒度,開始時間,結束時間)
釋義:(1)時間粒度參數:
2/SECOND--秒:計算開始時間與結束時間相差的秒數。
4/MINUTE--分:計算開始時間與結束時間相差多少分鍾。
8/HOUR--小時:計算開始時間與結束時間相差多少小時。
16/DAY--天:計算開始時間與結束時間相差的天數。
32/WEEK--周:計算開始時間與結束時間相差的周數。
64/MONTH--月:計算開始時間與結束時間相差多少月。
128/QUARTER--季:計算開始時間與結束時間相差的季度數。
256/YEAR--年:計算開始時間與結束時間相差的年數。
(2)開始時間:需要計算時間差的開始時間,參數格式需要為時間格式。
(3)結束時間:需要計算時間差的結束時間,參數格式需要為時間格式。
栗子: