首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 请教一个ORACLE的日期格式,要快呀,急用 [已结贴,结贴人:xi_ha]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-23 21:01:03 楼主

    要的时间格式是:2008-03-21 00:00:00
    必须要带时分秒且都为0。谢谢
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • liuyann
    • 等级:
    发表于:2008-03-23 21:03:511楼 得分:0
    select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;

    select to_char(sysdate,'yyyy-mm-dd 00:00:00') from dual;
    == 思想重于技巧 ==
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-23 21:12:432楼 得分:0
    感谢这么快速,
    经过我测试,
    一、select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual; 
    得出的结果有时分秒,但是不为0!不合要求!失败

    二、select to_char(sysdate,'yyyy-mm-dd 00:00:00') from dual; 
    数据库报错:date format not recognized
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • liuyann
    • 等级:
    发表于:2008-03-23 21:14:303楼 得分:0
    select to_char(sysdate,'yyyy-mm-dd')  ¦ ' 00:00:00' from dual; 
    == 思想重于技巧 ==
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-23 21:15:544楼 得分:0
    呵呵,连接符应该是‘  ¦ ¦’吧
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • liuyann
    • 等级:
    发表于:2008-03-23 21:17:425楼 得分:0
    == 思想重于技巧 ==
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-23 21:19:576楼 得分:0
    问题是这样的,表中有个字段load_time
    时间格式是2008-03-01 12:40:50

    我需要按日期查询一天的数据,因为表数据是千万级别的,
    所以要将传递进去的数格式转换成2008-03-01 00:00:00

    selct * from aa where load_time>=2008-03-01 00:00:00
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • liuyann
    • 等级:
    发表于:2008-03-23 21:34:267楼 得分:0
    selct * from aa where load_time>= to_date('2008-03-01','yyyy-mm-dd');
    == 思想重于技巧 ==
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-23 21:38:408楼 得分:0
    select * from aa where to_date(load_time,'yyyy-MM-dd')>= to_date('2008-03-01','yyyy-MM-dd'); 

    完美答案,收分
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-23 21:45:199楼 得分:0
    请问下,转换load_time成本高不 高,
    表AA可是有几千万的数据哦


    ===============================================================================
    select * from aa where to_date(load_time,'yyyy-MM-dd')>= to_date('2008-03-01','yyyy-MM-dd');  

    完美答案,收分 
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-23 21:54:2810楼 得分:0
    成本会有点高,但是你表建的就有问题,这个字段本来就该建成DATE,你现在放置日期,成本问题就是因为当时的设计造成的
    ,用下面的这个的成本应该差不多,因为是字符比较,数据库中日期比较远远要高于字符比较。

    另外,讲一下,你所需要的00:00:00为什么给你丢弃了,因为日期查询,不写时分秒的格式,默认就是从00:00:00开始
    select * from aa where load_time>= '2008-03-01';   
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-23 21:55:5411楼 得分:0
    我的程序.数据.DBA.交流QQ群6955562 
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • liuyann
    • 等级:
    发表于:2008-03-23 21:58:5712楼 得分:0
    load_time 是字符型?

    不用转换

    1  select * from aa where load_time>= '2008-03-01';

    2  select * from aa where load_time>= to_char(sysdate,'yyyy-mm-dd');
    == 思想重于技巧 ==
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-23 22:35:3013楼 得分:0
    非常感谢各位无私的帮助,
    刚刚有看到别人写的代码,稍做了修改,
      select  to_date(to_char(sysdate, 'yyyymmdd'),'yyyymmdd')+1/(24*60*60)  
      from dual

    很遗憾得出的结果是:2008-3-23 0:00:01

    有一秒,不知道那位能取到2008-3-23 0:00:00


    虽然这么说,但俺还是想知道怎么取?嘿嘿,困惑很久
    =============================================================================
    另外,讲一下,你所需要的00:00:00为什么给你丢弃了,因为日期查询,不写时分秒的格式,默认就是从00:00:00开始 
    select * from aa where load_time>= '2008-03-01';    
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-23 22:43:3414楼 得分:5
    Select trunc(load_time) From dual
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-24 17:16:5315楼 得分:5
    select to_char(trunc(sysdate),'yyyy-mm-dd hh24:mi:ss') from dual

    2008-03-24 00:00:00
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-24 17:18:1516楼 得分:0
    你的Load_time字段是不是日期型的?如果是直接这样比较就行了
    selct * from aa where load_time>=trunc(sysdate) and load_time  < trunc(sysdate+1)
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-24 20:04:2017楼 得分:5
    to_char(trunc(sysdate),'yyyy-mm-dd hh24:mi:ss')
    或者
    to_char(trunc(sysdate),'yyyy-mm-dd')  ¦ ¦ ' 00:00:00'
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-24 20:49:2118楼 得分:5
    trunc函数最合理的解决方法
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-24 21:52:3219楼 得分:0
     select to_char(sysdate,'yyyy-mm-dd') ¦ ¦'  00:00:00' from dual; 
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lkldiy
    • 等级:
    发表于:2008-03-25 13:33:5420楼 得分:0
    没什么说的了,搂主呢。。。。。。。。
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    世纪乐知(北京)网络技术有限公司 版权所有 京 ICP 证 020026 号
    Copyright © 2000-2007, CSDN.NET, All Rights Reserved