CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  数据库(包含打印,安装,报表)

SQL里的日期格式是怎么写

楼主houfuzhu(**追^_^梦**)2004-04-02 18:32:20 在 VB / 数据库(包含打印,安装,报表) 提问

我在用SQL语句进行日期查询时,总是得不到想要的结果  
  问题就出在日期格式不正确,请各位大虾指教,小弟在此拜谢 问题点数:92、回复次数:19Top

1 楼leolan(史留香)回复于 2004-04-02 18:37:43 得分 5

SQL   Server   可以辨識採用下列格式括在單引號   (')   中的日期與時間資料:    
   
  文數字的日期格式   (例如   'April   15,   1998')  
   
  數值的日期格式   (例如   '4/15/1998'、'April   15,   1998')  
   
  未分隔的字串格式   (例如   '19981207'、'December   12,   1998')  
   
  /**************************************************************  
  另,可以使用   Convert()   函數將時間字符串轉換成你想要的格式Top

2 楼Leftie(左手,为人民币服务)回复于 2004-04-02 18:43:59 得分 7

select   *   from   tablename   where   日期字段='2004-04-02'Top

3 楼popraincn(村上飞雪)回复于 2004-04-02 19:05:20 得分 5

使用   Convert()   函数转换成想要的就格式就可以比较了  
  关于convert()自己可以看看msdn  
  比如:  
              convert(char(10),getdate(),111)  
  就可以把getdate()转换成:2004/04/02的样式了Top

4 楼houfuzhu(**追^_^梦**)回复于 2004-04-02 19:10:38 得分 0

我在用SQ查询时也是在日期两头加上单引,但就不行啊  
  请问那位有调试通过的代码找个来让我参考!参考  
  在下感激不尽!  
  小弟在线等待Top

5 楼popraincn(村上飞雪)回复于 2004-04-02 19:25:09 得分 7

'Trim(Mask1.Text)=2004/01/01  
  'Trim(Mask2.Text)=2004/01/04  
  'jsr为数据库里一日期(YMD)字段  
   
  select   *   from   table   where   convert(char(10),jsr,111)>='"   &   Trim(Mask1.Text)   &   "'   and   convert(char(10),jsr,111)<='"   &   Trim(Mask2.Text)   &   "'  
   
  Top

6 楼MSTOP(陈建华)回复于 2004-04-02 19:31:03 得分 6

'2003/4/5'  
  '2003-2-2'  
  '2003年2月2日'Top

7 楼houfuzhu(**追^_^梦**)回复于 2004-04-02 21:06:31 得分 0

村上飞雪,请问convert的char(10)是什么意思,还有  
  参数111是什么意思Top

8 楼paoluo(一天到晚游泳的鱼)回复于 2004-04-02 21:26:13 得分 6

convert的语法     convert(data_type,expression[,style])  
   
  char(10)是定义数据类型及长度。  
   
  参数111是将返回的日期字符串的日期时间格式为“yy/mm/dd”  
   
  其余的参数对应什么格式在SQL的书上可以看到的。Top

9 楼paoluo(一天到晚游泳的鱼)回复于 2004-04-02 21:30:00 得分 5

我的程序里一个比较简单的SQL语句,给你参考一下:  
   
  select   *   from   tblorder   where   OrderDate>'2004/03/05'Top

10 楼houfuzhu(**追^_^梦**)回复于 2004-04-02 22:18:20 得分 0

谢谢各,最近7天后结贴  
  在这期间,希望各位大虾发表更多  
  例子以供小弟参考,小弟在此谢谢!!!Top

11 楼zjcxc(邹建)回复于 2004-04-02 22:58:50 得分 8

--用datediff就最方便了.  
   
  --比较年份是否相同  
  where   datediff(year,日期1,日期2)=0  
   
  --比较日期是否相同,精确到天  
  where   datediff(day,日期1,日期2)=0  
   
   
  --比较日期是否相同,精确到分钟  
  where   datediff(minute,日期1,日期2)=0  
  Top

12 楼zjcxc(邹建)回复于 2004-04-02 22:59:12 得分 10

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  
   
  Top

13 楼zjcxc(邹建)回复于 2004-04-02 23:00:43 得分 7

用datediff进行日期比较还有一个好处,就是:  
  它的第二个,第三个参数,如果不是日期型的话,它会自动进行转换  
   
  即你可以做这样的比较:  
   
  where   datediff(day,'20030101','2003-1-1')=0  
   
  前后两种日期格式不同,但结果照样正确.Top

14 楼Lionking1027(自由之子)回复于 2004-04-02 23:09:39 得分 6

'20041101'Top

15 楼diekiss(峯)回复于 2004-04-02 23:46:49 得分 5

如果是Access的数据库要写成   #2004-04-03#   的形式,Top

16 楼hobowang(大豆)回复于 2004-04-03 00:40:33 得分 5

#2004-04-03#  
   
  这样的话好象SQL SERVER 和ACCESS通用Top

17 楼whachun(jakly)回复于 2004-04-03 09:22:40 得分 5

如:  
  日期格式:yyyy-MM-dd  
   
  Select   *   from   tTableName   Where   Convert(varchar(10),cDateField,21)   Between   dBeginDate   And   dEndDateTop

18 楼whachun(jakly)回复于 2004-04-03 09:23:35 得分 5

根据日期格式,你可以改动21这个数字Top

19 楼houfuzhu(**追^_^梦**)回复于 2004-04-03 18:32:43 得分 0

谢谢各位大虾的指教,小弟这就结贴Top

相关问题

  • 日期的格式问题(sql server)?
  • 如何转换日期格式(SQL 2000)?
  • 求个格式化日期的sql
  • ms sql 日期格式的问题
  • 日期格式
  • 日期常量在Query的sql中的格式问题
  • SQL Server7.0 中的日期字段如何设置指定格式?
  • Delphi 中的SQL语法怎么用日期格式?
  • 究竟SQL Server 7中的日期格式是怎样的?
  • SQL SERVER中得到格式化日期的函数是什么?

关键词

  • 数字
  • 数据库
  • 转换
  • 日期
  • 格式
  • datediff
  • enddate
  • startdate
  • smalldatetime
  • 字符串

得分解答快速导航

  • 帖主:houfuzhu
  • leolan
  • Leftie
  • popraincn
  • popraincn
  • MSTOP
  • paoluo
  • paoluo
  • zjcxc
  • zjcxc
  • zjcxc
  • Lionking1027
  • diekiss
  • hobowang
  • whachun
  • whachun

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

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