怎么查询oracle的日期字段
数据库表里有个字段BIRTH,我想查询这个字段的值SELECTTO_CHAR(BIRTH,'YYYY-MM-DD),CARD_IDFROMTB_USERINFOWHERE...
数据库表里有个字段BIRTH,我想查询这个字段的值
SELECT TO_CHAR(BIRTH,' YYYY-MM-DD),CARD_ID FROM TB_USERINFO WHERE CARD_ID=#account# and PASSWORD=#password#
提示列名无效,换成to_date又说文字与格式不符,请问应该怎么写?查出来后我存放在一个Bean里,变量是定义成String还是Date?
还有,要修改日期字段的值要怎么写,我用SET BIRTH=TO_DATE('2010-01-01','YYYY-MM-DD')就可以改,可是该得日期是页面穿过来的日期,写成BIRTH=TO_DATE(birth,'YYYY-MM-DD')就说文字与格式不符,要用参数传值要怎么写?
===============用的是IBATIS框架,数据库操作写在配置文件里==============
查询的问题已解决,不过不是楼下说的引号问题,列名无效时找不到resultMap里的列名,加个别名就可以了,现在是修改不了,因为要传参数,UPDATE 里写成BIRTH=TO_DATE(TO_CHAR(birth,'YYYY-MM-DD'),'YYYY-MM-DD')不报错但也没改掉数据啊 展开
SELECT TO_CHAR(BIRTH,' YYYY-MM-DD),CARD_ID FROM TB_USERINFO WHERE CARD_ID=#account# and PASSWORD=#password#
提示列名无效,换成to_date又说文字与格式不符,请问应该怎么写?查出来后我存放在一个Bean里,变量是定义成String还是Date?
还有,要修改日期字段的值要怎么写,我用SET BIRTH=TO_DATE('2010-01-01','YYYY-MM-DD')就可以改,可是该得日期是页面穿过来的日期,写成BIRTH=TO_DATE(birth,'YYYY-MM-DD')就说文字与格式不符,要用参数传值要怎么写?
===============用的是IBATIS框架,数据库操作写在配置文件里==============
查询的问题已解决,不过不是楼下说的引号问题,列名无效时找不到resultMap里的列名,加个别名就可以了,现在是修改不了,因为要传参数,UPDATE 里写成BIRTH=TO_DATE(TO_CHAR(birth,'YYYY-MM-DD'),'YYYY-MM-DD')不报错但也没改掉数据啊 展开
4个回答
展开全部
这个属于oracle时间函数的用法
在oracle里,日期格式是一种特殊的东西
这里有一个日期转换函数
select to_char(日期,'yyyy-mm-dd hh24:mi:ss') from tablename;
这里的to_char就是将日期型转换成字符型的一个函数,转换成的格式就是
2010-08-23 17:51:20
当然你可以将这个日期转换成其他,如:
select to_char(日期,'yyyy-mm-dd') from tablename;
查出来的结果2010-08-23
所以你要根据这个日期来查东西就可以这么用
select * from tablename where to_char(日期,'yyyymmdd')between '20100801' and '20100823'
这个就是查日期8月1日到8月23日的数据
select * from tablename where to_char(日期,'yyyymmdd') = '20100801'
这个就是查8月1日的数据
其他不懂的你再问吧
-------补充------
你把你写的东西粘贴一下,也好帮你分析啊
你后边的" + model.Csrq + "参数传进来的是什么东西?
---------补充2-------
'yyyy-mm-dd 24hi:mi:ss'
这个地方错了,应改成
'yyyy-mm-dd hh24:mi:ss'
不是24hi
在oracle里,日期格式是一种特殊的东西
这里有一个日期转换函数
select to_char(日期,'yyyy-mm-dd hh24:mi:ss') from tablename;
这里的to_char就是将日期型转换成字符型的一个函数,转换成的格式就是
2010-08-23 17:51:20
当然你可以将这个日期转换成其他,如:
select to_char(日期,'yyyy-mm-dd') from tablename;
查出来的结果2010-08-23
所以你要根据这个日期来查东西就可以这么用
select * from tablename where to_char(日期,'yyyymmdd')between '20100801' and '20100823'
这个就是查日期8月1日到8月23日的数据
select * from tablename where to_char(日期,'yyyymmdd') = '20100801'
这个就是查8月1日的数据
其他不懂的你再问吧
-------补充------
你把你写的东西粘贴一下,也好帮你分析啊
你后边的" + model.Csrq + "参数传进来的是什么东西?
---------补充2-------
'yyyy-mm-dd 24hi:mi:ss'
这个地方错了,应改成
'yyyy-mm-dd hh24:mi:ss'
不是24hi
展开全部
SELECT TO_CHAR(BIRTH,'YYYY-MM-DD')你这丢个引号当然提示文字与格式不符了,没必要用TO_DATE(),定义成String类型吧 用String类型的变量来接收一个字符类型的日期(TO_CHAR())
to_date()是把birth按‘yyyy-mm-dd’格式转成日期类型的 你用一个字符串接收当然接收 不了了 转换一下就行了
to_date()是把birth按‘yyyy-mm-dd’格式转成日期类型的 你用一个字符串接收当然接收 不了了 转换一下就行了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的birth变量是什么类型?
1、字符型,那么你这样写肯定会报错。
2、Oracle的date型,那么肯定没问题。
3、其他时间型,那么要考虑先要用java内部函数转换成字符串,再直接to_date。
1、字符型,那么你这样写肯定会报错。
2、Oracle的date型,那么肯定没问题。
3、其他时间型,那么要考虑先要用java内部函数转换成字符串,再直接to_date。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
传参数,不知道你用的是java还是存储过程。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询