當前位置:首頁 » 編程語言 » oraclesql日期

oraclesql日期

發布時間: 2022-09-06 03:48:32

㈠ oracle 日期比較,只比較年月日怎麼寫

代碼如下:

d2 := to_date('20190528','yyyymmdd');

d3 := to_date('20170101','yyyymmdd');

d4 := sysdate;

if d1>d3 then --格式不同進行比較

dbms_output.put_line('d1>d3');

end if;

if d2>d3 then --格式相同比較

dbms_output.put_line('d2>d3');

end if;

if d1>d4 then --格式不同進行比較

dbms_output.put_line('d1>d4');

end if;

dbms_output.put_line('d4是:'||d4);

end;

(1)oraclesql日期擴展閱讀

oracle sql日期比較

oracle sql日期比較:

在今天之前:

select * from up_date where update < to_date('2007-09-07 00:00:00','yyyy-mm-dd hh24:mi:ss')

select * from up_date where update <= to_date('2007-09-07 00:00:00','yyyy-mm-dd hh24:mi:ss')

在今天只後:

select * from up_date where update > to_date('2007-09-07 00:00:00','yyyy-mm-dd hh24:mi:ss')

select * from up_date where update >= to_date('2007-09-07 00:00:00','yyyy-mm-dd hh24:mi:ss')

精確時間:

select * from up_date where update = to_date('2007-09-07 00:00:00','yyyy-mm-dd hh24:mi:ss')

㈡ oracle SQL語句,日期格式轉換

TO_DATE格式(以時間:2007-11-02 13:45:25為例)

1、日期和字元轉換函數用法(to_date,to_char)

select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as nowTime from al; //日期轉化為字元串

select to_char(sysdate,'yyyy') as nowYear from al; //獲取時間的年

select to_char(sysdate,'mm') as nowMonth from al; //獲取時間的月

select to_char(sysdate,'dd') as nowDay from al; //獲取時間的日

select to_char(sysdate,'hh24') as nowHour from al; //獲取時間的時

select to_char(sysdate,'mi') as nowMinute from al; //獲取時間的分

select to_char(sysdate,'ss') as nowSecond from al; //獲取時間的秒

2、字元串和時間互轉

select to_date('2004-05-07 13:23:44','yyyy-mm-dd hh24:mi:ss') from al

select to_char( to_date(222,'J'),'Jsp') from al //顯示Two Hundred Twenty-Two

(2)oraclesql日期擴展閱讀

date 轉換為字元串:

to_char(日期,」轉換格式」 ) 即把給定的日期按照「轉換格式」轉換。

轉換的格式:

表示year的:y 表示年的最後一位 yy 表示年的最後2位 yyy 表示年的最後3位 yyyy 用4位數表示年。

表示month的:mm 用2位數字表示月;mon 用簡寫形式 比如11月或者nov ;month 用全稱 比如11月或者november。

表示day的:dd 表示當月第幾天;ddd表示當年第幾天;dy 當周第幾天 簡寫 比如星期五或者fri;day當周第幾天全寫。比如星期五或者friday。

表示hour的:hh 2位數表示小時 12進制; hh24 2位數表示小時 24小時。

表示minute的:mi 2位數表示分鍾。

表示second的:ss 2位數表示秒60進制。

㈢ oracle查詢日期欄位大於某個日期值時sql語句怎麼寫

在之前已經大概了解過Mysql資料庫和學過相關的Oracle知識點,但是太久沒用過Oracle了,就基本忘了...印象中就只有基本的SQL語句和相關一些概念....寫下本博文的原因就是記載著Oracle一些以前沒注意到的知識點...以後或許會有用...

實例與資料庫概念
Oracle資料庫伺服器由兩部分組成:

實例:理解為對象,看不見的
資料庫:理解為類,看得見的
我們在安裝Oracle的時候,已經填寫過自己資料庫的名稱了,一般實例與資料庫的名稱是一致的...

如果還沒有安裝Oracle資料庫的,可以看一下我其他的博文....

那麼我們自帶的sqlplus黑色窗口與實例,資料庫之間的關系又是什麼的呢???我們可以看下圖:

Oracle資料庫把表、視圖等都看成是對象:

Oracle中的null值
Oracle中如果存在欄位是null值的話,那麼在sqlplus中它是不會顯示出來的....如果我們使用null值的數據與其他數據進行運算...那麼最終得出的結果都是null值

因此,Oracle提供了NVL(表達式1,表達式2)函數供我們使用,如果表達式1的值為null值,那麼就取表達式2的值...當然了,如果表達式1不是null,取的就是表達式1的值

還有值得注意的是:null值不能參數=號運算,null能參數number/date/varchar2類型運算

Oracle提供了 is null關鍵字來代替=號運算的問題

Oracle中的別名
我們知道在Mysql中如果要用別名的話,需要使用as關鍵字 ,後面跟著別名就行了....Oracle可以省略as關鍵字...

並且,一般地,我們使用別名都是用雙引號""把別名括起來,Oracle也支持我們直接寫別名,但是呢**,如果我們不寫雙引號,那麼我們的別名是不能有空格的**

還有一點的是:Oracle的別名是不能使用單引號來括起來的,Oracle默認認為單引號是字元串類型和日期類型的。

㈣ oracle 怎麼用sql語句獲取日期欄位的年月日

組件使用和其他的沒有什麼兩樣,只是在設置連接資料庫的時候選擇ORACLE資料庫驅動就可以了.
需要看你的資料庫中存儲的是什麼格式了.
我使用的ORACLE資料庫中的欄位格式為'18-九月-2006
15:45:08',精確到秒.
這樣的格式使用
delphi查詢可以這樣做:
query1.sql.Add('select
*
from
tablename
where
DATe
>
to_date(''18-8-2006
15:45:08'',''DD-MM-YYYY
HH24:MI:SS'')
AND
DATE
<
to_date(''18-11-2006
15:45:08'',''DD-MM-YYYY
HH24:MI:SS'')'
)
;
其中'18-11-2006
15:45:08'

'18-9-2006
15:45:08'
就是要求的兩個天數.

㈤ ORACLE SQL 如何查詢當前日期和下個月數據,用兩列顯示

select *
from a
where a.time between
(select b.startdate
from b b
where sysdate between startdate and enddate)
and (select b.enddate
from b b
where sysdate between startdate and enddate);

㈥ oracle sql日期查詢

SELECT
TO_CHAR(TO_DATE('2014-02-01', 'YYYY-MM-DD') + LEVEL-1,'YYYY-MM-DD')
from al
CONNECT BY LEVEL < SYSDATE - TO_DATE('2014-02-01', 'YYYY-MM-DD')+1
執行這個SQL就可以查詢到你想要的結果了

㈦ 用 oracle 寫一個 sql語句 查詢上一個月的最大日期,

首先獲取本月第一點trunc(sysdate,'mm');這個是獲取本月第一天的時間,然後-1就是上個月最後一天,然後輸出日期to_char(date,'DD');
最後SQL
select to_char(trunc(sysdate,'mm')-1,'DD') from al;

㈧ 求ORACLE SQL下的日期函數

1. 日期和字元轉換函數用法(to_date,to_char)

select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as nowTime from al; //日期轉化為字元串
select to_char(sysdate,'yyyy') as nowYear from al; //獲取時間的年
select to_char(sysdate,'mm') as nowMonth from al; //獲取時間的月
select to_char(sysdate,'dd') as nowDay from al; //獲取時間的日
select to_char(sysdate,'hh24') as nowHour from al; //獲取時間的時
select to_char(sysdate,'mi') as nowMinute from al; //獲取時間的分
select to_char(sysdate,'ss') as nowSecond from al; //獲取時間的秒
select to_date('2004-05-07 13:23:44','yyyy-mm-dd hh24:mi:ss') from al// 2.
select to_char( to_date(222,'J'),'Jsp') from al

顯示Two Hundred Twenty-Two 3.求某天是星期幾
select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day') from al;
星期一
select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from al;
monday
設置日期語言
ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN';
也可以這樣
TO_DATE ('2002-08-26', 'YYYY-mm-dd', 'NLS_DATE_LANGUAGE = American') 4. 兩個日期間的天數
select floor(sysdate - to_date('20020405','yyyymmdd')) from al; 5. 時間為null的用法
select id, active_date from table1
UNION
select 1, TO_DATE(null) from al;

注意要用TO_DATE(null) 6.月份差
a_date between to_date('20011201','yyyymmdd') and to_date('20011231','yyyymmdd')
那麼12月31號中午12點之後和12月1號的12點之前是不包含在這個范圍之內的。
所以,當時間需要精確的時候,覺得to_char還是必要的

7. 日期格式沖突問題
輸入的格式要看你安裝的ORACLE字元集的類型, 比如: US7ASCII, date格式的類型就是: '01-Jan-01'
alter system set NLS_DATE_LANGUAGE = American
alter session set NLS_DATE_LANGUAGE = American
或者在to_date中寫
select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from al;
注意我這只是舉了NLS_DATE_LANGUAGE,當然還有很多,
可查看
select * from nls_session_parameters
select * from V$NLS_PARAMETERS 8.
select count(*)
from ( select rownum-1 rnum
from all_objects
where rownum <= to_date('2002-02-28','yyyy-mm-dd') - to_date('2002-
02-01','yyyy-mm-dd')+1
)
where to_char( to_date('2002-02-01','yyyy-mm-dd')+rnum-1, 'D' )
not in ( '1', '7' )

查找2002-02-28至2002-02-01間除星期一和七的天數
在前後分別調用DBMS_UTILITY.GET_TIME, 讓後將結果相減(得到的是1/100秒, 而不是毫秒). 9. 查找月份
select months_between(to_date('01-31-1999','MM-DD-YYYY'),to_date('12-31-1998','MM-DD-YYYY')) "MONTHS" FROM DUAL;
1
select months_between(to_date('02-01-1999','MM-DD-YYYY'),to_date('12-31-1998','MM-DD-YYYY')) "MONTHS" FROM DUAL;
1.03225806451613

10. Next_day的用法
Next_day(date, day)

Monday-Sunday, for format code DAY
Mon-Sun, for format code DY
1-7, for format code D 11
select to_char(sysdate,'hh:mi:ss') TIME from all_objects
注意:第一條記錄的TIME 與最後一行是一樣的
可以建立一個函數來處理這個問題
create or replace function sys_date return date is
begin
return sysdate;
end;

select to_char(sys_date,'hh:mi:ss') from all_objects;

12.獲得小時數
extract()找出日期或間隔值的欄位值
SELECT EXTRACT(HOUR FROM TIMESTAMP '2001-02-16 2:38:40') from offer
SQL> select sysdate ,to_char(sysdate,'hh') from al;

SYSDATE TO_CHAR(SYSDATE,'HH')
-------------------- ---------------------
2003-10-13 19:35:21 07

SQL> select sysdate ,to_char(sysdate,'hh24') from al;

SYSDATE TO_CHAR(SYSDATE,'HH24')
-------------------- -----------------------
2003-10-13 19:35:21 19
13.年月日的處理
select older_date,
newer_date,
years,
months,
abs(
trunc(
newer_date-
add_months( older_date,years*12+months )
)
) days

from ( select
trunc(months_between( newer_date, older_date )/12) YEARS,
mod(trunc(months_between( newer_date, older_date )),12 ) MONTHS,
newer_date,
older_date
from (
select hiredate older_date, add_months(hiredate,rownum)+rownum newer_date
from emp
)
) 14.處理月份天數不定的辦法
select to_char(add_months(last_day(sysdate) +1, -2), 'yyyymmdd'),last_day(sysdate) from al 16.找出今年的天數
select add_months(trunc(sysdate,'year'), 12) - trunc(sysdate,'year') from al 閏年的處理方法
to_char( last_day( to_date('02' | | :year,'mmyyyy') ), 'dd' )
如果是28就不是閏年 17.yyyy與rrrr的區別
'YYYY99 TO_C
------- ----
yyyy 99 0099
rrrr 99 1999
yyyy 01 0001
rrrr 01 2001 18.不同時區的處理
select to_char( NEW_TIME( sysdate, 'GMT','EST'), 'dd/mm/yyyy hh:mi:ss') ,sysdate
from al; 19.5秒鍾一個間隔
Select TO_DATE(FLOOR(TO_CHAR(sysdate,'SSSSS')/300) * 300,'SSSSS') ,TO_CHAR(sysdate,'SSSSS')
from al 2002-11-1 9:55:00 35786
SSSSS表示5位秒數 20.一年的第幾天
select TO_CHAR(SYSDATE,'DDD'),sysdate from al

310 2002-11-6 10:03:51 21.計算小時,分,秒,毫秒
select
Days,
A,
TRUNC(A*24) Hours,
TRUNC(A*24*60 - 60*TRUNC(A*24)) Minutes,
TRUNC(A*24*60*60 - 60*TRUNC(A*24*60)) Seconds,
TRUNC(A*24*60*60*100 - 100*TRUNC(A*24*60*60)) mSeconds
from
(
select
trunc(sysdate) Days,
sysdate - trunc(sysdate) A
from al
)
select * from tabname
order by decode(mode,'FIFO',1,-1)*to_char(rq,'yyyymmddhh24miss');

//
floor((date2-date1) /365) 作為年
floor((date2-date1, 365) /30) 作為月
d(mod(date2-date1, 365), 30)作為日. 23.next_day函數 返回下個星期的日期,day為1-7或星期日-星期六,1表示星期日
next_day(sysdate,6)是從當前開始下一個星期五。後面的數字是從星期日開始算起。
1 2 3 4 5 6 7
日 一 二 三 四 五 六

---------------------------------------------------------------

select (sysdate-to_date('2003-12-03 12:55:45','yyyy-mm-dd hh24:mi:ss'))*24*60*60 from dal
日期 返回的是天 然後 轉換為ss

24,round[舍入到最接近的日期](day:舍入到最接近的星期日)
select sysdate S1,
round(sysdate) S2 ,
round(sysdate,'year') YEAR,
round(sysdate,'month') MONTH ,
round(sysdate,'day') DAY from al 25,trunc[截斷到最接近的日期,單位為天] ,返回的是日期類型
select sysdate S1,
trunc(sysdate) S2, //返回當前日期,無時分秒
trunc(sysdate,'year') YEAR, //返回當前年的1月1日,無時分秒
trunc(sysdate,'month') MONTH , //返回當前月的1日,無時分秒
trunc(sysdate,'day') DAY //返回當前星期的星期天,無時分秒
from al 26,返回日期列表中最晚日期
select greatest('01-1月-04','04-1月-04','10-2月-04') from al 27.計算時間差
注:oracle時間差是以天數為單位,所以換算成年月,日

select floor(to_number(sysdate-to_date('2007-11-02 15:55:03','yyyy-mm-dd hh24:mi:ss'))/365) as spanYears from al //時間差-年
select ceil(moths_between(sysdate-to_date('2007-11-02 15:55:03','yyyy-mm-dd hh24:mi:ss'))) as spanMonths from al //時間差-月
select floor(to_number(sysdate-to_date('2007-11-02 15:55:03','yyyy-mm-dd hh24:mi:ss'))) as spanDays from al //時間差-天
select floor(to_number(sysdate-to_date('2007-11-02 15:55:03','yyyy-mm-dd hh24:mi:ss'))*24) as spanHours from al //時間差-時
select floor(to_number(sysdate-to_date('2007-11-02 15:55:03','yyyy-mm-dd hh24:mi:ss'))*24*60) as spanMinutes from al //時間差-分
select floor(to_number(sysdate-to_date('2007-11-02 15:55:03','yyyy-mm-dd hh24:mi:ss'))*24*60*60) as spanSeconds from al //時間差-秒 28.更新時間
注:oracle時間加減是以天數為單位,設改變數為n,所以換算成年月,日
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),to_char(sysdate+n*365,'yyyy-mm-dd hh24:mi:ss') as newTime from al //改變時間-年
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),add_months(sysdate,n) as newTime from al //改變時間-月
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),to_char(sysdate+n,'yyyy-mm-dd hh24:mi:ss') as newTime from al //改變時間-日
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),to_char(sysdate+n/24,'yyyy-mm-dd hh24:mi:ss') as newTime from al //改變時間-時
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),to_char(sysdate+n/24/60,'yyyy-mm-dd hh24:mi:ss') as newTime from al //改變時間-分
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),to_char(sysdate+n/24/60/60,'yyyy-mm-dd hh24:mi:ss') as newTime from al //改變時間-秒 29.查找月的第一天,最後一天
SELECT Trunc(Trunc(SYSDATE, 'MONTH') - 1, 'MONTH') First_Day_Last_Month,
Trunc(SYSDATE, 'MONTH') - 1 / 86400 Last_Day_Last_Month,
Trunc(SYSDATE, 'MONTH') First_Day_Cur_Month,
LAST_DAY(Trunc(SYSDATE, 'MONTH')) + 1 - 1 / 86400 Last_Day_Cur_Month
FROM al;

熱點內容
ios儲存密碼哪裡看 發布:2024-09-08 09:30:02 瀏覽:869
opensslcmake編譯 發布:2024-09-08 09:08:48 瀏覽:653
linux下ntp伺服器搭建 發布:2024-09-08 08:26:46 瀏覽:744
db2新建資料庫 發布:2024-09-08 08:10:19 瀏覽:173
頻率計源碼 發布:2024-09-08 07:40:26 瀏覽:780
奧迪a6哪個配置帶後排加熱 發布:2024-09-08 07:06:32 瀏覽:101
linux修改apache埠 發布:2024-09-08 07:05:49 瀏覽:209
有多少個不同的密碼子 發布:2024-09-08 07:00:46 瀏覽:566
linux搭建mysql伺服器配置 發布:2024-09-08 06:50:02 瀏覽:995
加上www不能訪問 發布:2024-09-08 06:39:52 瀏覽:811