how to query DBF(dbase) files date type field in where and between clause

人盡茶涼 提交于 2019-12-04 07:40:45

OK -

I believe the problem is that dBase/xBase doesn't support "between" for SQL dates

WORKAROUND:

@"SELECT * FROM D:\DBFreader\file.dbf where [RDATE] >= #2/16/2006 12:00:00 AM# and [RDATE] < #2/20/2006 12:00:00 AM#"

PS: I know dBase syntax supports "date" literals (e.g. "2/16/2006"; I don't know about "datetime" - plese try it and see.

dbase/Foxpro syntax for BETWEEN (and works on any of same data types) is

BETWEEN( SomeValue, MinRange, MaxRange )

so your query could be done like

where between( [RDATE], ctod( '02/16/2006' ), ctod( '02/20/2006' ))

in old DBase and VFP forward, CTOD() stands for Character To Date conversion and expects in format like mm/dd/yyyy. By doing just the "date" portion, it always implies 12:00:00 AM.

in addition, you could use the DATE() function available such as date( yyyy, mm, dd ) as Date( 2006, 02, 16 ) which would also return this specific date.

If you wanted a specific time, you could use CTOT() which represents Character TO dateTime field, such as

CTOT( "2012-09-20T15:16:21" )  = Sep 20, 2012 @ 3:16:21pm

Not an DBase expert but this and this looks promising.

This worked for me,

WHERE RDATE >= {^2016-11-01} AND RDATE <= {^2017-01-31}

I checked this with OLEDB Connection

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!