我表里面有两个时间in_date和out_date两个字段的类型都是varchar2的表名car_goods_info时间类型为年-月-日 时:分:秒。null表示今天我要获取到7点到8点,8点到9点之间的数据,请问能办到么?不管是in_date还是out_date都可以同列字段之间的时间。
éè¦è½¬æ¢ædateæ ¼å¼è¿è¡æ¯è¾ï¼æè ç´æ¥æ¯è¾ä¹å¯ä»¥ã
æ¯å¦æ¶é´æ ¼å¼æ¯2104-01-01 00:00:00ã
è¯æ³ï¼
select sign(to_date('2015-01-01 00:00:00', 'yyyy-mm-dd hh24:mi:ss') -to_date('2015-01-02 00:00:00', 'yyyy-mm-dd hh24:mi:ss'))
from dual
å¦æè¿åå¼ä¸º-1ï¼ååè¾¹çæ¥æè¾å°ï¼è¿åå¼ä¸º0ï¼å两个å¼ä¸æ ·å¤§ï¼è¿åå¼ä¸º1ï¼ååè¾¹çæ¥æè¾å°ã
sql: SELECT TO_DATE('2006-05-01 19:25:34', 'YYYY-MM-DD HH24:MI:SS')-TO_DATE('20015-05-01 19:25:34', 'YYYY-MM-DD HH24:MI:SS') FROM DUAL;
备注:时间做差的话,越是靠近当前时间的日期越大,所以大于0就是前面的时间大,否则就是后面的时间大。
能给我写个伪SQL语句么?我之前在网上看了一下
select * from car_goods_info
where to_date(in_date,'yyyy-MM-dd hh24-mm-ss') between to_date('2014-10-23 07:00:00','yyyy-MM-dd hh24-mm-ss') and to_date('2014-10-23 08:00:00','yyyy-MM-dd hh24-mm-ss')
and to_date(out_date,'yyyy-MM-dd hh24-mm-ss') between to_date('2014-10-23 08:00:00','yyyy-MM-dd hh24-mm-ss') and to_date('2014-10-23 09:00:00','yyyy-MM-dd hh24-mm-ss');
oracle 里 DATE型是可以比较的 所以我都给你转成了DATE型 看着舒坦多了。追问
如果我要把一天24小时的记录全部按一个小时一个小时来展示比如7到8点8到9点是不是要将这种查询语句写成select (上述sql语句区间改为7-8)
) as 7到8(sql区间改为8-9) as 8到9,.... from car_goods_info这样么?有简便的方法没
1-2 2-3 3-4 4-5。。。。。。
v1 v2 v3 v4 。。。。。。
你要这样的显示结果是吗?如果你的car_goods_info只有一列是可以的,但是多余一列是不行的。
比如in_date和out _date不能as成一个7-8。
如果你真的只有一列,非要这样显示的话,要显示几个区间,就要在SELECT后面接几个字段。
类似下面的:
select * from car_goods_info where to_date(in_date ,'yyyy-MM-dd hh24:mi:ss') between to_date('2014-10-23 08:00:00','yyyy-MM-dd hh24:mi:ss') and ('2014-10-23 09:00:00','yyyy-MM-dd hh24:mi:ss')追问
如果我要把一天24小时的记录全部按一个小时一个小时来展示比如7到8点8到9点是不是要将这种查询语句写成select (上述sql语句区间改为7-8)
) as 7到8(sql区间改为8-9) as 8到9,.... from car_goods_info这样么?