CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Web 开发 >  ASP

在asp中如何写比较日期字段的SQL语句(access数据库)?

楼主javaxbenz(任逍遥)2003-06-04 01:21:19 在 Web 开发 / ASP 提问

Set   rs=Server.CreateObject("ADODB.RecordSet")  
  SQL="Select   *   From   table   "  
  IF   Trim(CStr(BeginDate))<>""   then  
  SQL   =SQL   +"   where   Date>='"&CStr(BeginDate)&"'"  
  End   IF  
  IF   Trim(CStr(EndDate))<>""   then  
  SQL   =SQL   +"   and   Date <='"&CStr(EndDate)&"'"  
  End   IF  
  SQL   =SQL   +"     order   by   Date   DESC"  
  set   rs=conn.execute(sql)  
  IE的错误提示是:语法错误   (操作符丢失)   .  
  请问上面的比较日期的该怎么写呢? 问题点数:30、回复次数:8Top

1 楼ahalf(ahalf)回复于 2003-06-04 08:02:43 得分 4

使用formatTop

2 楼gq(游子)回复于 2003-06-04 08:35:39 得分 4

 
    Transact-SQL   参考    
   
     
  DATEDIFF  
  返回跨两个指定日期的日期和时间边界数。    
   
  语法  
  DATEDIFF   (   datepart   ,   startdate   ,   enddate   )    
   
  参数  
  datepart  
   
  是规定了应在日期的哪一部分计算差额的参数。下表列出了   Microsoft&reg;   SQL   Server&#8482;   识别的日期部分和缩写。  
   
  日期部分   缩写    
  year   yy,   yyyy    
  quarter   qq,   q    
  Month   mm,   m    
  dayofyear   dy,   y    
  Day   dd,   d    
  Week   wk,   ww    
  Hour   hh    
  minute   mi,   n    
  second   ss,   s    
  millisecond   ms    
   
   
  startdate  
   
  是计算的开始日期。startdate   是返回   datetime   或   smalldatetime   值或日期格式字符串的表达式。    
   
  因为   smalldatetime   只精确到分钟,所以当用   smalldatetime   值时,秒和毫秒总是   0。  
   
  如果您只指定年份的最后两位数字,则小于或等于"两位数年份截止期"配置选项的值的最后两位数字的数字所在世纪与截止年所在世纪相同。大于该选项的值的最后两位数字的数字所在世纪为截止年所在世纪的前一个世纪。例如,如果   two   digit   year   cutoff   为   2049(默认),则   49   被解释为   2049,2050   被解释为   1950。为避免模糊,请使用四位数的年份。  
   
  有关时间值指定的更多信息,请参见时间格式。有关日期指定的更多信息,请参见   datetime   和   smalldatetime。    
   
  enddate  
   
  是计算的终止日期。enddate   是返回   datetime   或   smalldatetime   值或日期格式字符串的表达式。  
   
  返回类型  
  integer  
   
  注释  
  startdate   是从   enddate   减去。如果   startdate   比   enddate   晚,返回负值。  
   
  当结果超出整数值范围,DATEDIFF   产生错误。对于毫秒,最大数是   24   天   20   小时   31   分钟零   23.647   秒。对于秒,最大数是   68   年。  
   
  计算跨分钟、秒和毫秒这些边界的方法,使得   DATEDIFF   给出的结果在全部数据类型中是一致的。结果是带正负号的整数值,其等于跨第一个和第二个日期间的   datepart   边界数。例如,在   1   月   4   日(星期日)和   1   月   11   日(星期日)之间的星期数是   1。  
   
  示例  
  此示例确定在   pubs   数据库中标题发布日期和当前日期间的天数。  
   
  USE   pubs  
  GO  
  SELECT   DATEDIFF(day,   pubdate,   getdate())   AS   no_of_days  
  FROM   titles  
  GO  
   
   
  请参见  
   
  CAST   和   CONVERT    
   
  数据类型  
   
  日期和时间函数    
   
  &copy;1988-2000   Microsoft   Corporation。保留所有权利。  
  Top

3 楼lsrzm(Michale Lee)回复于 2003-06-04 08:43:06 得分 5

Set   rs=Server.CreateObject("ADODB.RecordSet")  
  SQL="Select   *   From   table   "  
  IF   Trim(CStr(BeginDate))<>""   then  
  SQL   =SQL   +"   where   Date>=#"&CStr(BeginDate)&"#"  
  End   IF  
  IF   Trim(CStr(EndDate))<>""   then  
  SQL   =SQL   +"   and   Date <=#"&CStr(EndDate)&"#"  
  End   IF  
  SQL   =SQL   +"     order   by   Date   DESC"  
  set   rs=conn.execute(sql)  
  Top

4 楼chichuli_4(clf)回复于 2003-06-04 08:44:18 得分 3

#"&CStr(BeginDate)&"#  
  Top

5 楼scu96124678(冰河)回复于 2003-06-04 08:52:01 得分 4

sql=   "select   id,username,passward,up_date   from   czry   "  
  if   isdate(getpara("from",date-10))   then    
  fs="   where   up_date>="&"#"&fdate(cdate(getpara("from",date-10)))&"#"  
  sql=sql&fs  
  end   if  
  if   isdate(getpara("to1",date))   then    
  ts="   and   up_date<"&"#"&fdate(cdate(getpara("to1",date))+1)&"#"  
  sql=sql&ts  
  'response.write   sql  
  'response.end  
  end   if  
  rs.open   sql,cn,1,1Top

6 楼myflok(老虎爱吃肉)回复于 2003-06-04 09:38:11 得分 4

Set   rs=Server.CreateObject("ADODB.RecordSet")  
  SQL="Select   *   From   table   "  
  IF   Trim(CStr(BeginDate))<>""   and   isdate(Begindate)   then  
  SQL   =SQL   +"   where   [Date]>='"   &   CStr(BeginDate)   &   "'"  
                    IF   Trim(CStr(EndDate))<>""   and   isdate(Enddate)   then  
                        SQL   =SQL   +"   and   [Date] <='"   &   CStr(EndDate)   &   "'"  
                    end   if  
  End   IF  
  SQL   =SQL   +"     order   by   [Date]   DESC"  
  rs.open   sql,cn,3,1  
   
   
   
  注意[Date]Top

7 楼azza8888(azza8888)回复于 2003-06-07 07:22:49 得分 3

在access中时间段要用##包住,在oracle中得用ts{}包住Top

8 楼dongdong6161(东东)回复于 2003-06-07 09:03:21 得分 3

用一般的比较只能蒙一下人,我觉得只有用(datediff('d','"&tdate&"',stopdate)>=0)才能准确比较,而且你的两个字段最好都是同一个时间函数生成的,自己构造的时间格式容易出问题!Top

相关问题

  • asp中sql语句操作备注字段通过不了。
  • 一个SQL语句的字段问题
  • 请教设置字段的SQL语句
  • 更改字段顺序 SQL 语句
  • 如何追加字段,求sql语句?
  • 求sql语句A表1字段=B表1字段+B表2字段??
  • 关于ASP中使用SQL语句查询VFP数据库DATETIME字段的问题
  • asp 里用sql语句:select columnname from tablename ,这里的字段名可以是变量么?
  • 在ASP中如何判断一个left join 的sql语句返回的结果集的某一特定字段是否为空字段。
  • 能否用sql语句来改变字段的顺序??如果用sql语句添加字段??急!!

关键词

  • date
  • sql
  • thensql
  • begindate
  • cstr
  • ifif
  • enddate
  • isdate
  • trim
  • where

得分解答快速导航

  • 帖主:javaxbenz
  • ahalf
  • gq
  • lsrzm
  • chichuli_4
  • scu96124678
  • myflok
  • azza8888
  • dongdong6161

相关链接

  • Web开发类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo