自己对DELPHI学习的一点体会

源代码在线查看: 如何用sql查询日期型字段? (2001年1月19日).txt

软件大小: 771 K
上传用户: pipinooad
关键词: DELPHI
下载地址: 免注册下载 普通下载 VIP

相关代码

				如何用SQL查询日期型字段? (2001年1月19日) 
				
				本站更新  分类:   作者:赵亦平  推荐:   阅读次数:653  
				(http://www.codesky.net)  
				
				--------------------------------------------------------------------------------
				如何用SQL查询日期型字段?
				
				我在写一个“通用数据库查询系统”时,需要用SQL对一个日期型字段进行查询,突然发现Delphi没有日期型变量,在Foxpro中一对大括号{}就表示这是个日期型变量,而在Delphi中我竟然不知道如何表示。羞愧之余,到处找资料、查信息。先是看到在Delphi FAQ中言之凿凿地说可以用:where aDate:=#01/01/99#或是 where aDate:=“01/01/99”来查找,赶紧试一下,报语法错;后又在Delphi Chat中看到一位朋友说可以用如下语句来查找:where aDate:=Cast(‘01/01/99’ as Date);又连忙试一下,哈,没有出错了,而且有返回的记录,哈哈哈……,还没笑完,眼睛随便瞟了一眼结果就笑不出来了,因为结果完全不对,查出的结果的日期全为0000-00-00,这是怎么回事?赶快查SQL语言的书,说Cast是用来进行类型转换的,如果类型转换不正确的话并不会提示出错,而是返回一个无效值。看来,我就是碰到了类型转换不正确。拍了半天脑袋,灵机一动,是不是日期类型的格式不对,查看了一下Delphi显示的数据库中的日期型字段,发现它的格式是1999-9-20,我用的SQL语句是:where aDate:=Cast(‘99-9-20’ as Date);应该不会错,可是它的返回结果如何解释呢?为什么别人都可以正确运行,而我就是不行呢?实在没办法了,抱着死马当活马治的心情,调出WIN98的控制面板中区域设置,选中“日期”页,将其日期分隔符由“-”改为“/”,然后再来试运行:select * from aDataBase where aDate:=Cast(‘09/20/99’ as Date);哈哈,出来结果了,而且完全正确,我简直笑得涕泪横流。闹了半天,原来只是一个小小的日期分隔符在做怪。
				通过进一步试验,发现不管系统的短日期格式设成怎样,SQL语句都必须写成where aDate:=Cast(‘09/20/99’ as Date),为什么呢?嘿嘿,我也不知道!
				
				赵亦平
				1999年10月12日
				 
				 
				
				
				--------------------------------------------------------------------------------
							

相关资源