首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • SQL判断时间问题,急急急!!!
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hello_zhenyu
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 揭贴率:
    发表于:2008-08-18 19:10:20 楼主
    在sql里判断时间,在页面上有两个接受时间的文本框,第一个为开始时间第二个为结束时间,文本框可以为空(有结束时间就必须有开始时间)我现在先写个sql语句查询。不知道怎么写,当输入两个的时候用between,但是当输入一个开始时间的时候呢?我的sql如下:
    C/C++ code
    SELECT E.EXCEPTIONAL_DATE_ID, E.LOCATION_ID, E.START_DT, E.END_DT, E.TIME_FR, E.TIME_TO, E.DAY_OF_WEEK, E.AVAILABILITY_FLAG, E.DESCRIPTION, E.REPEAT_TIME_FLAG, E.CREATED_BY, E.CREATED_DT, E.UPDATED_BY, E.UPDATED_DT, CL.DESCRIPTION LDESCRIPTION FROM VMSQA.CT_EXCEPTIONAL_DATES E, VMSQA.CT_LOCATION CL WHERE 1=1 and E.LOCATION_ID = ? and E.START_DT between ? AND ? AND E.LOCATION_ID=CL.LOCATION_ID
    100  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wufeng4552
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-18 19:35:281楼 得分:0
    你可以在前端判断
    但结束时间为空的时候与不为空的时候
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hello_zhenyu
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-18 19:37:132楼 得分:0
    当判断后面为空后,sql的关键字该为什么呢?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wufeng4552
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-18 19:41:333楼 得分:0
    既然一个为空,那显然不能用between,用等于
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hello_zhenyu
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-18 19:46:114楼 得分:0
    等于?我是要找到大于或等于start_dt的数据
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wufeng4552
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-18 19:48:035楼 得分:0
    引用 4 楼 hello_zhenyu 的回复:
    等于?我是要找到大于或等于start_dt的数据

    那就>=
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • szx1999
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-18 20:08:336楼 得分:0
    ...
    and (开始时间 is null or E.START_DT between 开始时间 and 结束时间)
    and ...
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • sword_88
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-18 21:04:497楼 得分:0
    have a look!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • mugua604
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-18 21:49:288楼 得分:0
    用>= AND <=代替?当为空值的时候不要后面的AND,
    我的思路是。。写个方法。
    首先判断传进来的参数是否为空。
    declare @wheresql  varchar(max)
    set @wheresql = @wheresql+case when @a='' then '' else ' and time>='''@a''' end
    set @wheresql = @wheresql+case when @b='' then '' else ' and time <='''@b''' end
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • tianyusunkuangyu
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-19 06:00:439楼 得分:0
    最好在页面的时候就进行判断:包括为空,格式,及默认值
    这样就会减少了后台服务器的负荷,也增加了程序的可靠性
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • kelph
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-19 06:33:2410楼 得分:0
    SQL code
    declare @start datetime declare @end datetime SELECT E.EXCEPTIONAL_DATE_ID, E.LOCATION_ID, E.START_DT, E.END_DT, E.TIME_FR, E.TIME_TO, E.DAY_OF_WEEK, E.AVAILABILITY_FLAG, E.DESCRIPTION, E.REPEAT_TIME_FLAG, E.CREATED_BY, E.CREATED_DT, E.UPDATED_BY, E.UPDATED_DT, CL.DESCRIPTION LDESCRIPTION FROM VMSQA.CT_EXCEPTIONAL_DATES E, VMSQA.CT_LOCATION CL WHERE 1=1 and E.LOCATION_ID = ? and E.START_DT between (case when @start is null then '1900-1-1' else @start end ) and (case when @end is null then '2100-1-1' else @end end )
    修改 删除 举报 引用 回复

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