下面的语句错在哪里?
.Filter = "data>='" & DTPicker2.Value & "' and data<='" & DTPicker3.Value & "'"
29 个解决方案
#1
用between么。
#2
"select 字段 from 表名 where filter between #" & cstr(cdate(dtpticker2.value)) & "# and #" and cstr(cdate(dtpicker3.value)) & "#"
#3
嘻嘻!
'将时间转化成SQLServer认可的形式
Public Function ConvertTimeToSQLServerSQL(ByVal OriginalTime As Date) As String
ConvertTimeToSQLServerSQL = "'" & Format(OriginalTime, "yyyy-mm-dd hh:nn:ss") & "'"
End Function
'将时间转化成SQLServer认可的形式
Public Function ConvertTimeToSQLServerSQL(ByVal OriginalTime As Date) As String
ConvertTimeToSQLServerSQL = "'" & Format(OriginalTime, "yyyy-mm-dd hh:nn:ss") & "'"
End Function
#4
各位高手,我在数据库中有一个字段是date,我如何查询数据库中某一时间段内的数据?
下面的语句错在哪里?
.Filter = "data>='" & DTPicker2.Value & "' and data<='" & DTPicker3.Value & "'"
--->data应为date,如下:
.Filter = "date>='" & DTPicker2.Value & "' and date<='" & DTPicker3.Value & "'"
下面的语句错在哪里?
.Filter = "data>='" & DTPicker2.Value & "' and data<='" & DTPicker3.Value & "'"
--->data应为date,如下:
.Filter = "date>='" & DTPicker2.Value & "' and date<='" & DTPicker3.Value & "'"
#5
to asussony(我用2000b我怕谁?) :between如何用呢?
to w18ily(看.net没几天) 我试了还是不行
to netcar(netload) 不是这个问题,data是我定义的字段
to w18ily(看.net没几天) 我试了还是不行
to netcar(netload) 不是这个问题,data是我定义的字段
#6
Set Myrs2 = Mydb.OpenRecordset("select sum(数量) as numSum ,sum(金额) as numPrice from inlibsearch where 材料编码='" + mrc.Fields("goodsid") + "' and 进库日期 >=#" & DTPicker1.Value & "# and 进库日期 <= #" & DTPicker2.Value & "# ")
这是我以前写的软件所用到的语句,你看看是否可参考。
这是我以前写的软件所用到的语句,你看看是否可参考。
#7
先说什么数据库,赫赫。
#8
"select 字段 from 表名 where data between '"& ConvertTimeToSQLServerSQL(dtpticker2.value) &"' and '" & ConvertTimeToSQLServerSQL(dtpicker3.value) & "'"
#9
zhenxizhou(追忆)的写法结合Between更好!
是直接利用SQL的关于时间的写法,我的是自己的用法,嘻嘻!
是直接利用SQL的关于时间的写法,我的是自己的用法,嘻嘻!
#10
用Datediff函数,对两个时间做差。
具体参看T-SQL说明。
具体参看T-SQL说明。
#11
to sinopec_fjnp(小不点)
我试了,说类型不符
我试了,说类型不符
#12
用datadiff函数
#13
to newly_ignorant(不学无术)
access 有问题吗?
access 有问题吗?
#14
在vb下用str(val(DTPicker2.Value ))试一试
是between .... and .....
是between .... and .....
#15
我觉得要看你用的是什么数据库,如果是ACCESS好象直接用#号把时间括起来就行了,如果用的是SQL SERVER 则要用:
strtimerang = "WHERE (进库日期>= CONVERT(DATETIME, '" & Format(DTPicker1.Value, "yyyy-MM-dd") & " 00:00:00', 102)) AND " _
& "(进库日期<= CONVERT(DATETIME, '" & Format(DTPicker2.Value, "yyyy-MM-dd") & " 23:59:59', 102)) "
strtimerang = "WHERE (进库日期>= CONVERT(DATETIME, '" & Format(DTPicker1.Value, "yyyy-MM-dd") & " 00:00:00', 102)) AND " _
& "(进库日期<= CONVERT(DATETIME, '" & Format(DTPicker2.Value, "yyyy-MM-dd") & " 23:59:59', 102)) "
#16
UP
#17
Access的日期型常量是用#號括起來的。所以你的Recordset.Filter條件應這樣設:
.Filter = "data>=#" & DTPicker2.Value & "# and data<=#" & DTPicker3.Value & "#"
.Filter = "data>=#" & DTPicker2.Value & "# and data<=#" & DTPicker3.Value & "#"
#18
如果是SQL SERVER 的话,可以在SQL语句中使用DATEDIFF函数,具体用法请参照联机帮助.
#19
直接用SQL不就得了?你这样搞得太复杂
SQLCode:
select ..... from ..... where (valuedate(date)>起始日期) and (valuedate(date)<截止日期)
SQLCode:
select ..... from ..... where (valuedate(date)>起始日期) and (valuedate(date)<截止日期)
#20
跟你操作的数据库类型有关
#21
刚才的SQL有错误,应该是:
"select ..... from ..... where (Cast(Date AS DateTime)>(Cast('" + Cstr(DTPickerStart.Value) + "' AS DateTime)>) And (Cast(Date AS DateTime)<(Cast( '" +Cstr(DTPickerEnd.Value)+ "' AS DateTime)>)"
从DTPicker中取时间然后转换成字符型量嵌到SQL里就完了:)
"select ..... from ..... where (Cast(Date AS DateTime)>(Cast('" + Cstr(DTPickerStart.Value) + "' AS DateTime)>) And (Cast(Date AS DateTime)<(Cast( '" +Cstr(DTPickerEnd.Value)+ "' AS DateTime)>)"
从DTPicker中取时间然后转换成字符型量嵌到SQL里就完了:)
#22
刚才的SQL有错误,应该是:
"select ..... from ..... where (Cast(Date AS DateTime)>(Cast('" + Cstr(DTPickerStart.Value) + "' AS DateTime)) And (Cast(Date AS DateTime)<(Cast( '" +Cstr(DTPickerEnd.Value)+ "' AS DateTime))"
从DTPicker中取时间然后转换成字符型量嵌到SQL里就完了:)
"select ..... from ..... where (Cast(Date AS DateTime)>(Cast('" + Cstr(DTPickerStart.Value) + "' AS DateTime)) And (Cast(Date AS DateTime)<(Cast( '" +Cstr(DTPickerEnd.Value)+ "' AS DateTime))"
从DTPicker中取时间然后转换成字符型量嵌到SQL里就完了:)
#23
我也遇到过这种问题,你不要使用dtpicker控件的value属性,你将这些值分开,比如dtpicker.year &"-" &dtpicker.month &"-"& dtpicker.day.这样就没有问题了。
#24
补充说明,这样解决吧
Select .... from ....
Where DATEDIFF(dd,开始日前,Date)<0 and DATEDIFF(dd,结束日前,Date)>0
Select .... from ....
Where DATEDIFF(dd,开始日前,Date)<0 and DATEDIFF(dd,结束日前,Date)>0
#25
oracle中
字段名 between to_date() and to_data()
字段名 between to_date() and to_data()
#26
我在Sql Server 2000的联机帮助中看到《编写国际化 Transact-SQL 语句》这篇文章,觉得很有用,其中提到数据库中的日期时间问题。下面是我在delphi中的尝试:
先写一个函数:
function CreateGlobalTSQLString(ADateTime: TDateTime): string;
var
strDestDateTime: string;
begin
strDestDateTime := FormatDateTime('yyyy-mm-dd hh:mm:ss.zzz', ADateTime);
Result := 'CONVERT(DATETIME,''' + strDestDateTime + ''',20)';
end;
然后在生成sql语句时这样写:
ADODataSet1.CommandText := 'SELECT * FROM 订单 WHERE 订购日期 BETWEEN '+
CreateGlobalTSQLString(DateTimePicker1.Date) + ' AND ' +
CreateGlobalTSQLString(DateTimePicker2.Date) + ' ORDER BY 订购日期';
这样就不用考虑DateTimePicker的日期格式和库中日期字段的格式的不同了。实际上这样处理就是告诉sql server我给你传进去的日期是什么格式的,剩下的事就是sql server的事了。
我只在sql server 2000上测试通过。有兴趣的朋友可以试试其它的数据库。
先写一个函数:
function CreateGlobalTSQLString(ADateTime: TDateTime): string;
var
strDestDateTime: string;
begin
strDestDateTime := FormatDateTime('yyyy-mm-dd hh:mm:ss.zzz', ADateTime);
Result := 'CONVERT(DATETIME,''' + strDestDateTime + ''',20)';
end;
然后在生成sql语句时这样写:
ADODataSet1.CommandText := 'SELECT * FROM 订单 WHERE 订购日期 BETWEEN '+
CreateGlobalTSQLString(DateTimePicker1.Date) + ' AND ' +
CreateGlobalTSQLString(DateTimePicker2.Date) + ' ORDER BY 订购日期';
这样就不用考虑DateTimePicker的日期格式和库中日期字段的格式的不同了。实际上这样处理就是告诉sql server我给你传进去的日期是什么格式的,剩下的事就是sql server的事了。
我只在sql server 2000上测试通过。有兴趣的朋友可以试试其它的数据库。
#27
select datevalue(进库日期)>'"dtpicker1.value"' from 表
#28
需要改变以下时间格式:samlldatetime(DateTimePicker)
#29
between和datediff 应该都可以吧
#1
用between么。
#2
"select 字段 from 表名 where filter between #" & cstr(cdate(dtpticker2.value)) & "# and #" and cstr(cdate(dtpicker3.value)) & "#"
#3
嘻嘻!
'将时间转化成SQLServer认可的形式
Public Function ConvertTimeToSQLServerSQL(ByVal OriginalTime As Date) As String
ConvertTimeToSQLServerSQL = "'" & Format(OriginalTime, "yyyy-mm-dd hh:nn:ss") & "'"
End Function
'将时间转化成SQLServer认可的形式
Public Function ConvertTimeToSQLServerSQL(ByVal OriginalTime As Date) As String
ConvertTimeToSQLServerSQL = "'" & Format(OriginalTime, "yyyy-mm-dd hh:nn:ss") & "'"
End Function
#4
各位高手,我在数据库中有一个字段是date,我如何查询数据库中某一时间段内的数据?
下面的语句错在哪里?
.Filter = "data>='" & DTPicker2.Value & "' and data<='" & DTPicker3.Value & "'"
--->data应为date,如下:
.Filter = "date>='" & DTPicker2.Value & "' and date<='" & DTPicker3.Value & "'"
下面的语句错在哪里?
.Filter = "data>='" & DTPicker2.Value & "' and data<='" & DTPicker3.Value & "'"
--->data应为date,如下:
.Filter = "date>='" & DTPicker2.Value & "' and date<='" & DTPicker3.Value & "'"
#5
to asussony(我用2000b我怕谁?) :between如何用呢?
to w18ily(看.net没几天) 我试了还是不行
to netcar(netload) 不是这个问题,data是我定义的字段
to w18ily(看.net没几天) 我试了还是不行
to netcar(netload) 不是这个问题,data是我定义的字段
#6
Set Myrs2 = Mydb.OpenRecordset("select sum(数量) as numSum ,sum(金额) as numPrice from inlibsearch where 材料编码='" + mrc.Fields("goodsid") + "' and 进库日期 >=#" & DTPicker1.Value & "# and 进库日期 <= #" & DTPicker2.Value & "# ")
这是我以前写的软件所用到的语句,你看看是否可参考。
这是我以前写的软件所用到的语句,你看看是否可参考。
#7
先说什么数据库,赫赫。
#8
"select 字段 from 表名 where data between '"& ConvertTimeToSQLServerSQL(dtpticker2.value) &"' and '" & ConvertTimeToSQLServerSQL(dtpicker3.value) & "'"
#9
zhenxizhou(追忆)的写法结合Between更好!
是直接利用SQL的关于时间的写法,我的是自己的用法,嘻嘻!
是直接利用SQL的关于时间的写法,我的是自己的用法,嘻嘻!
#10
用Datediff函数,对两个时间做差。
具体参看T-SQL说明。
具体参看T-SQL说明。
#11
to sinopec_fjnp(小不点)
我试了,说类型不符
我试了,说类型不符
#12
用datadiff函数
#13
to newly_ignorant(不学无术)
access 有问题吗?
access 有问题吗?
#14
在vb下用str(val(DTPicker2.Value ))试一试
是between .... and .....
是between .... and .....
#15
我觉得要看你用的是什么数据库,如果是ACCESS好象直接用#号把时间括起来就行了,如果用的是SQL SERVER 则要用:
strtimerang = "WHERE (进库日期>= CONVERT(DATETIME, '" & Format(DTPicker1.Value, "yyyy-MM-dd") & " 00:00:00', 102)) AND " _
& "(进库日期<= CONVERT(DATETIME, '" & Format(DTPicker2.Value, "yyyy-MM-dd") & " 23:59:59', 102)) "
strtimerang = "WHERE (进库日期>= CONVERT(DATETIME, '" & Format(DTPicker1.Value, "yyyy-MM-dd") & " 00:00:00', 102)) AND " _
& "(进库日期<= CONVERT(DATETIME, '" & Format(DTPicker2.Value, "yyyy-MM-dd") & " 23:59:59', 102)) "
#16
UP
#17
Access的日期型常量是用#號括起來的。所以你的Recordset.Filter條件應這樣設:
.Filter = "data>=#" & DTPicker2.Value & "# and data<=#" & DTPicker3.Value & "#"
.Filter = "data>=#" & DTPicker2.Value & "# and data<=#" & DTPicker3.Value & "#"
#18
如果是SQL SERVER 的话,可以在SQL语句中使用DATEDIFF函数,具体用法请参照联机帮助.
#19
直接用SQL不就得了?你这样搞得太复杂
SQLCode:
select ..... from ..... where (valuedate(date)>起始日期) and (valuedate(date)<截止日期)
SQLCode:
select ..... from ..... where (valuedate(date)>起始日期) and (valuedate(date)<截止日期)
#20
跟你操作的数据库类型有关
#21
刚才的SQL有错误,应该是:
"select ..... from ..... where (Cast(Date AS DateTime)>(Cast('" + Cstr(DTPickerStart.Value) + "' AS DateTime)>) And (Cast(Date AS DateTime)<(Cast( '" +Cstr(DTPickerEnd.Value)+ "' AS DateTime)>)"
从DTPicker中取时间然后转换成字符型量嵌到SQL里就完了:)
"select ..... from ..... where (Cast(Date AS DateTime)>(Cast('" + Cstr(DTPickerStart.Value) + "' AS DateTime)>) And (Cast(Date AS DateTime)<(Cast( '" +Cstr(DTPickerEnd.Value)+ "' AS DateTime)>)"
从DTPicker中取时间然后转换成字符型量嵌到SQL里就完了:)
#22
刚才的SQL有错误,应该是:
"select ..... from ..... where (Cast(Date AS DateTime)>(Cast('" + Cstr(DTPickerStart.Value) + "' AS DateTime)) And (Cast(Date AS DateTime)<(Cast( '" +Cstr(DTPickerEnd.Value)+ "' AS DateTime))"
从DTPicker中取时间然后转换成字符型量嵌到SQL里就完了:)
"select ..... from ..... where (Cast(Date AS DateTime)>(Cast('" + Cstr(DTPickerStart.Value) + "' AS DateTime)) And (Cast(Date AS DateTime)<(Cast( '" +Cstr(DTPickerEnd.Value)+ "' AS DateTime))"
从DTPicker中取时间然后转换成字符型量嵌到SQL里就完了:)
#23
我也遇到过这种问题,你不要使用dtpicker控件的value属性,你将这些值分开,比如dtpicker.year &"-" &dtpicker.month &"-"& dtpicker.day.这样就没有问题了。
#24
补充说明,这样解决吧
Select .... from ....
Where DATEDIFF(dd,开始日前,Date)<0 and DATEDIFF(dd,结束日前,Date)>0
Select .... from ....
Where DATEDIFF(dd,开始日前,Date)<0 and DATEDIFF(dd,结束日前,Date)>0
#25
oracle中
字段名 between to_date() and to_data()
字段名 between to_date() and to_data()
#26
我在Sql Server 2000的联机帮助中看到《编写国际化 Transact-SQL 语句》这篇文章,觉得很有用,其中提到数据库中的日期时间问题。下面是我在delphi中的尝试:
先写一个函数:
function CreateGlobalTSQLString(ADateTime: TDateTime): string;
var
strDestDateTime: string;
begin
strDestDateTime := FormatDateTime('yyyy-mm-dd hh:mm:ss.zzz', ADateTime);
Result := 'CONVERT(DATETIME,''' + strDestDateTime + ''',20)';
end;
然后在生成sql语句时这样写:
ADODataSet1.CommandText := 'SELECT * FROM 订单 WHERE 订购日期 BETWEEN '+
CreateGlobalTSQLString(DateTimePicker1.Date) + ' AND ' +
CreateGlobalTSQLString(DateTimePicker2.Date) + ' ORDER BY 订购日期';
这样就不用考虑DateTimePicker的日期格式和库中日期字段的格式的不同了。实际上这样处理就是告诉sql server我给你传进去的日期是什么格式的,剩下的事就是sql server的事了。
我只在sql server 2000上测试通过。有兴趣的朋友可以试试其它的数据库。
先写一个函数:
function CreateGlobalTSQLString(ADateTime: TDateTime): string;
var
strDestDateTime: string;
begin
strDestDateTime := FormatDateTime('yyyy-mm-dd hh:mm:ss.zzz', ADateTime);
Result := 'CONVERT(DATETIME,''' + strDestDateTime + ''',20)';
end;
然后在生成sql语句时这样写:
ADODataSet1.CommandText := 'SELECT * FROM 订单 WHERE 订购日期 BETWEEN '+
CreateGlobalTSQLString(DateTimePicker1.Date) + ' AND ' +
CreateGlobalTSQLString(DateTimePicker2.Date) + ' ORDER BY 订购日期';
这样就不用考虑DateTimePicker的日期格式和库中日期字段的格式的不同了。实际上这样处理就是告诉sql server我给你传进去的日期是什么格式的,剩下的事就是sql server的事了。
我只在sql server 2000上测试通过。有兴趣的朋友可以试试其它的数据库。
#27
select datevalue(进库日期)>'"dtpicker1.value"' from 表
#28
需要改变以下时间格式:samlldatetime(DateTimePicker)
#29
between和datediff 应该都可以吧