要求:查询将要到车辆保养日期fbytxrq(提前14天提醒)的车辆信息,界定一个时间段比如2009-05-01~2009-06-01之间需要提醒的客户资料,
也即是说保养日期fbytxrq-14天,如果属于后面这个时间段就显示出来select * from tb_cl where DATEADD(d, -14,fbytxrq) between'" & MaskEdBox1.Text & "' and '" & MaskEdBox2.Text & "'order by flzrq asc"1、数据库里fbytxrq对应的字段为smalldatetime类型,如何界定这个方位不让他出错,smalldatetime日期范围1990到2079年
超过这个范围就会报错2、不允许更改数据库
上面那个语句总是显示提示错误:向列smalldatetime添加值时导致溢出
也即是说保养日期fbytxrq-14天,如果属于后面这个时间段就显示出来select * from tb_cl where DATEADD(d, -14,fbytxrq) between'" & MaskEdBox1.Text & "' and '" & MaskEdBox2.Text & "'order by flzrq asc"1、数据库里fbytxrq对应的字段为smalldatetime类型,如何界定这个方位不让他出错,smalldatetime日期范围1990到2079年
超过这个范围就会报错2、不允许更改数据库
上面那个语句总是显示提示错误:向列smalldatetime添加值时导致溢出
DATEADD(d, -14,fbytxrq) 改成
DATEADD(d, -14, convert(datetime,sdatae,20)) 就不用加减了
select * from tb_cl where fbytxrq < '1900-1-1'"看看结果是不是为空的
select * from tb_cl where fbytxrq < '1900-1-1'看看结果是不是为空的
select * from tb_cl where fbytxrq between'" & dateadd("d" ,14,cdate(MaskEdBox1.Text)) & "' and '" & dateadd("d" ,14,cdate(MaskEdBox2.Text)) & "'order by flzrq asc"
查出来的结果,fbytxrq最小的开始时间都是2009-05-01号,提前14天,应该是2009-05-01往前14天才对,另外order by排序也不起作用了
select * from tb_cl where DATEADD(d, -14,fbytxrq) between'" & MaskEdBox1.Text & "' and '" & MaskEdBox2.Text & "'order by flzrq asc"
比如MaskEdBox1.Text 和MaskEdBox2.Text 的值分别为2009-5-1和2009-6-1,查出的内容的fbytxrq范围应该是:2009-5-15到2009-6-15之间的数据.而你本意是:MaskEdBox1.Text 和MaskEdBox2.Text 的值分别为2009-5-1和2009-6-1时,查出的fbytxrq范围应该是:2009-4-16到2009-5-17这间的数据,那高应该是这样的:
select * from tb_cl where fbytxrq between'" & dateadd("d" ,-14,cdate(MaskEdBox1.Text)) & "' and '" & dateadd("d" ,-14,cdate(MaskEdBox2.Text)) & "'order by flzrq asc"
而你本意是:MaskEdBox1.Text 和MaskEdBox2.Text 的值分别为2009-5-1和2009-6-1时,查出的fbytxrq范围应该是:2009-4-16到2009-5-17这间的数据,那高应该是这样的:
select * from tb_cl where fbytxrq between'" & dateadd("d" ,-14,cdate(MaskEdBox1.Text)) & "' and '" & dateadd("d" ,-14,cdate(MaskEdBox2.Text)) & "'order by flzrq asc"
[/Quote]应该是这样,不过也没有5.1以前的数据,查不出来
2、加上CDate函数。
要求:查询将要到车辆保养日期fbytxrq(提前14天提醒)的车辆信息,界定一个时间段比如2009-05-01~2009-06-01之间需要提醒的客户资料,
也即是说保养日期fbytxrq-14天,如果属于后面这个时间段就显示出来
fbytxrq是车辆的保养日期,需要在这个日期到来之前的14天开始提醒客户做保养,比如说如果是2009-5-1日保养,那么从2009-4-16日开始就要每天提醒."界定一个时间段比如2009-05-01~2009-06-01之间需要提醒的客户资料"意思是在五月期间有哪些客户需要提醒的,那2009-5-1日开始要提醒的最早的保养日期应该是2009-5-14日,是之后日期,而不应该是之前的,之前的应该在4月份就做过了.
所以还是应该用这句:
select * from tb_cl where fbytxrq between'" & dateadd("d" ,14,cdate(MaskEdBox1.Text)) & "' and '" & dateadd("d" ,14,cdate(MaskEdBox2.Text)) & "'order by flzrq asc"
用了你的查询,现在查询出的结果有两个问题,
1、查询不到5月1日前的数据
2、排序order by语句不起作用
2.flzrq字段是什么类型的