1、如果你的日期字段形如yyyy-mm-dd,sql如下select 你要的字段 from 你的表名 where 日期字段=to_date(to_char(sysdate,'yyyy-mm-dd'),'yyyy-mm-dd')2、如果你的时间字段形如yyyy-mm-dd HH24:MI:SS,sql如下select 你要的字段 from 你的表名 where 日期字段=sysdate
成都创新互联-专业网站定制、快速模板网站建设、高性价比华亭网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式华亭网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖华亭地区。费用合理售后完善,10余年实体公司更值得信赖。
如果比较的字段类型相同,出现if语句不执行,那么问题应该是比较的值中有null。
要注意的是: SQL中null值是很特殊的,它代表没有值,一个非null值与null进行比较时(或者算术运算),其结果仍然为null。那么在if语句中,一个非null值与null进行逻辑比较,其结果一样是null,即结果既不是true,也不是false。所有,不管你用if a = b或者if a != b,只要其中有null值进行比较,if条件都是不成立的,即都不会进入执行。
所以,如果有null值存在的话,要用is null先进行判断。
SELECT id FROM A WHERE TO_CHAR( date, 'YYYYMMDD' ) = TO_CHAR( SYSDATE, 'YYYYMMDD')
或者
SELECT id FROM A WHERE TRUNC( date, 'D' ) = TRUNC( SYSDATE, 'D' )
前者是通过格式化字符串处理, 后者是通过 日期截尾来处理。
如果是date型比较大小,直接用大于、小于比较就可以了。
字符型的也可以直接比较或者转化为to_date('20121106','yyyymmdd')再比较。
日期相减 date1-date2 算出来的为多少天,*24可以转化差多少小时,同理*24*60*60为相差多少秒
1 不用转换,直接相减,看正负。结果还可以表明两个日期的差距,正的说明前者大,负的是后者大。
2 做判断是大于还是小于。
oracle 查询日期区间内的数据一般最常用的就是between and 和=,=(或者不要等号)了;
举例:select * from tablename t where t.日期列 between to_date('2015-10-20 00:00:00','yyyy-mm-dd hh24:mi:ss') and to_date('2015-10-20 23:59:59','yyyy-mm-dd hh24:mi:ss')
或者:
select * from tablename where t.日期列 = to_date('2015-10-20 00:00:00','yyyy-mm-dd hh24:mi:ss') and t.日期列 = to_date('2015-10-20 23:59:59','yyyy-mm-dd hh24:mi:ss')
如果要查询开区间的数据只需将= 和=改为和就行。