oracle欄位是時間戳型別
to_timestamp(
'2012-07-28 00:00:0.000000000'
,'yyyy-mm-dd hh24:mi:ss.ff9'
)
時間戳格式化
select to_char(時間戳的那一列 /
(1000*60
*60*24
)+ to_date(
'1970-01-01 08:00:00'
,'yyyy-mm-dd hh:mi:ss'),
'yyyy-mm-dd hh:mi:ss'
)as cdate
from 表名 ;
oracle group by 顯示其他字段
select
oid,
back1,back2,
row_number(
)over
(partition
by back1 order
by oid desc
) rw
from test1
時間比較(timestamp)
-- 1. 都變為字串比較
where to_char(birthdate,
'yyyy-mm-dd'
)>=
'2000-10-5'
-- 2. 都變為日期格式比較
where birthdate >= to_date(
'2000-10-5'
,'yyyy-mm-dd'
)-- 3. 第三種
where to_date(record_date,
'yyyy-mm'
)= to_date(
'2000-10'
,'yyyy-mm'
)-- 4. 錯誤方式
where birthdate >=
'2000-10-5'
報錯: 輸入時間太長
結論:時間太長,如果是乙個比較不會出錯,多個比較需要給輸入時間字串加上單引號
-- 第一種
<
if test=
" beginyear != null and beginyear !='' "
>
and to_date(substr(record_date,1,
7),'yyyy-mm'
)>
= to_date(
'$',
'yyyy-mm'
)>
<
if test=
" endyear!= null and endyear !='' "
>
and to_date(substr(record_date,1,
7),'yyyy-mm'
)<
= to_date(
'$',
'yyyy-mm'
)>
-- 第二種
<
if test=
" beginyear != null and beginyear !='' "
>
and to_date(record_date,
'yyyy-mm'
)>
= to_date(
'$',
'yyyy-mm'
)>
<
if test=
" endyear!= null and endyear !='' "
>
and to_date(record_date,
'yyyy-mm'
)<
= to_date(
'$',
'yyyy-mm'
)>
-- 第三種
<
if test=
" beginyear != null and beginyear !='' "
>
and record_date >
= to_date(
'$',
'yyyy-mm'
)>
<
if test=
" endyear!= null and endyear !='' "
>
and record_date <
= to_date(
'$',
'yyyy-mm'
)>
時間比較
-- 正確語句
select to_date(
'2012-05-06 12:05:03'
,'yyyy-mm-dd hh24:mi:ss'
)from dual
select to_date(
'2012-05-06'
,'yyyy-mm-dd hh24:mi:ss'
)from dual
select to_date(
'2012-05-06'
,'yyyy-mm-dd'
)from dual
-- 報錯語句
select to_date(
'2012-05-06 12:05:03'
,'yyyy-mm-dd'
)from dual
報錯
型別實際值
解決
and to_date(to_char(
year
,'yyyy-mm'),
'yyyy-mm'
)= to_date(
'$',
'yyyy-mm'
)
時間戳型別轉成時間
-- 等於
and to_char(to_date(
'1970/01/01 08:00:00'
,'yyyy/mm/dd hh24:mi:ss'
)+ create_date/
(1000*60
*60*24
),'yyyy'
)= to_char(sysdate,
'yyyy'
)-- 大於等於
and to_date(
'1970/01/01 08:00:00'
,'yyyy/mm/dd hh24:mi:ss'
)+ create_date/
(1000*60
*60*24
)>
= to_date(
'1970/01/01 08:00:00'
,'yyyy/mm/dd hh24:mi:ss'
)+ $/
(1000*60
*60*24
)
時間型別
-- 等於
and to_char(create_time,
'yyyy'
)= to_char(sysdate,
'yyyy'
)-- 大於等於
and to_date(
'1970/01/01 08:00:00'
,'yyyy/mm/dd hh24:mi:ss'
)+ create_date/
(1000*60
*60*24
)>
= to_date(
'1970/01/01 08:00:00'
,'yyyy/mm/dd hh24:mi:ss'
)+ $/
(1000*60
*60*24
)
大於等於
--本年 and to_char(create_date,'yyyy')=to_char(sysdate,'yyyy')
--本月 and to_char(create_date,'yyyy-mm')=to_char(sysdate,'yyyy-mm')
--本日 and to_char(create_date,'yyyy-mm-dd')=to_char(sysdate,'yyyy-mm-dd')
--自定義 and create_date >= # and create_date <= #
Oracle 日期型別問題
1.發生ora 01830 日期格式在轉換整個輸入字串之前 的錯誤資訊 有幾種可能 1 查詢的時候 select to date invoice date,yyyy mm dd from tab invoice date varchar2 30 提示 ora 01830 日期格式在轉換整個輸入字串之...
Oracle 日期型別資料加減
1 最常見的方式 select sysdate 當前時間 sysdate 1 當前時間減1天 sysdate 1 當前時間加1天 sysdate 1 24 當前時間減1小時 sysdate 1 24 60 當前時間減1分鐘 sysdate 1 24 60 60 當前時間減1秒 2 使用系統函式 為了...
oracle中日期型別DATE TIMESTAMP
1 date型別精確到秒,timestamp型別精確到秒的小數,2 date型別相減,得到的結果為整型,單位是天。timestamp型別相減,或者timestamp與date型別相減,得到的結果是interval。date與timestamp型別加減乙個數值,得到的型別為date。3 oracle中...