.dtq文件查询.dbf的SQL语法

时间:2011-01-28 00:31:39

标签: sql dbf

在Microsoft Visual Studio 2008专业版中使用最新的Visual Fox Pro OLE DB提供程序。我无法在* .dtq文件中使用SQL函数。我有超过181 * .dtq文件,我ultimatley需要从sqlscript调用,但我的问题在于尝试解析dbf文件中的列。我需要的列包含一个时间即。 HH:MM:SS我需要能够解析时间列以拉出小时或分钟。分钟将以15分钟的间隔进行分段,即每小时15分钟,只要时间>超过0但是< 15这样我就能以15分钟的间隔提取数据。通常我会使用像parse或parsname这样的函数,或者使用split或decimal或decim这样的函数来表示字符空间#然后是字符空格。就像在dos中我可以使用%TIME:~3,2%来获取包含我需要的时间信息的列的分钟部分所需的信息。请帮我。先谢谢你。

1 个答案:

答案 0 :(得分:0)

虽然我不直接熟悉.dtq文件(除非它们只是重命名.dbf文件),但VFP具有日期/时间功能,可以为您获取日期字段的不同组件。但是,“TIME”组件没有数据类型。它通常只存储为字符串(字符)列。但是,如果列IS是日期/时间,则可以使用

HOUR( YourDateTimeColumn ) -- will return based on 24 hour clock... 1pm = 13, 2pm = 14, etc
MINUTE( YourDateTimeColumn )

但是,你的例子显示了HH:MM:SS,所以我将存储为一个字符串。所以我会得到它...

select 
      val( left( YourTimeColumn, 2 )) as MyHour,
      val( substr( YourTimeColumn, 4, 2 )) as MyMinutes,
      int( val( substr( YourTimeColumn, 4, 2 )) / 15 ) as QtrMinute
   from
      YourTable

稍微离开你的> 0和< 15并不代表真正的15分钟,但是14,

0 - 14 minutes = 1st quarter minute
15- 29 minutes = 2nd quarter minute
30- 44 minutes = 3rd quarter minute
45- 59 minutes = 4th quarter minute

如果你希望季度基于1-15分钟,16-30,31-45,46-60,那么改为 int(1 + val(...)作为QtrMinute