并且在使用时,todate和tochar
如果使用从oracle中查询得到的时间,再做为where的查询条件,进行新的查询,
要使用todate
select * from tabletest where
t.time=to_date('"+obtaintime+"','yyyy-mm-dd hh24:mi:ss')
因为从oracle中获得的时间格式如2013/7/11 8:00:00
而select中需要的t.time字段的格式为2013-07-11 08:00,使用todate可自动补足格式。
但是!如果使用 where to_char(t.time,'yyyy-mm-dd hh24:mi')='" + obtaintime+
"'"; ,则在oracle中查询不到数据,显示记录数为0
to_date()与24小时制表示法及mm分钟的显示:一、在使用Oracle的to_date函数来做日期转换时,很多Java程序员也许会和我一样,直觉的采用“yyyy-MM-dd
HH:mm:ss”的格式作为格式进行转换,但是在Oracle中会引起错误:“ORA 01810
格式代码出现两次”。
如:select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mm:ss')
from dual;
原因是SQL中不区分大小写,MM和mm被认为是相同的格式代码,所以Oracle的SQL采用了mi代替分钟。select to_date('2005-01-01 13:14:20','yyyy-MM-dd
HH24:mi:ss') from dual;
二、另要以24小时的形式显示出来要用HH24select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from
dual;//mi是分钟select
to_char(sysdate,'yyyy-MM-dd HH24:mm:ss') from dual;//mm会显示月份
ToDate 把字符串转化为date类型ToChar 可以把日期转化为想要的格式的字符串
下文为转发
to_date()与24小时制表示法及mm分钟的显示:
一、在使用Oracle的to_date函数来做日期转换时,很多Java程序员也许会和我一样,直觉的采
用“yyyy-MM-dd HH:mm:ss”的格式作为格式进行转换,但是在Oracle中会引起错误:“ORA 01810
格式
代码出现两次”。 如:select to_date('2005-01-01
13:14:20','yyyy-MM-dd HH24:mm:ss') from
dual; 原因是SQL中不区分大小写,MM和mm被认为是相同的格式代码,所以Oracle的SQL采用了mi代替分
钟。 select to_date('2005-01-01
13:14:20','yyyy-MM-dd HH24:mi:ss') from dual;
二、另要以24小时的形式显示出来要用HH24
select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from
dual;//mi是分钟
select to_char(sysdate,'yyyy-MM-dd HH24:mm:ss') from
dual;//mm会显示月份
to_date() 与 to_char()
日期和字符串转换
to_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进制
表示季度的:q 一位数 表示季度 (1-4)
另外还有ww 用来表示当年第几周
w用来表示当月第几周。
24小时制下的时间范围:00:00:00-23:59:59 12小时制下的时间范围:1:00:00-12:59:59 比如: select
to_char(sysdate,'yy-mm-dd hh24:mi:ss') from
dual //显示:08-11-07 13:22:42
select to_date('2005-12-25,13:25:59','yyyy-mm-dd,hh24:mi:ss')
from dual //显示:2005-12-25
13:25:59
而如果把上式写作:select
to_date('2005-12-25,13:25:59','yyyy-mm-dd,hh:mi:ss') from
dual,则会报错,因为小时hh是12进制,13为非法输入,不能匹配。
补充:
当前时间减去7分钟的时间 select
sysdate,sysdate - interval '7' MINUTE from
dual
当前时间减去7小时的时间 select sysdate
- interval '7' hour from dual
当前时间减去7天的时间 select sysdate -
interval ’7’ day from dual
当前时间减去7月的时间 select sysdate,sysdate - interval
'7' month from dual
当前时间减去7年的时间 select sysdate,sysdate - interval
'7' year from dual
时间间隔乘以一个数字 select
sysdate,sysdate - 8*interval '7' hour from
dual
time字段是DATETIME类型 select * from table_name
where jxlx='03002' and time
between to_date('2007-9-1','yyyy-mm-dd') and
to_date('2007-9-20 23:59:59','yyyy-mm-dd hh24:mi:ss)
还有一个to_char() 与null值比较:is
not null,is
null
如 select * from orders where price is
null ,price等于null 如: select * from orders where price is not
null , price不等于null