0

在 Microsoft Visual Studio 2008 Pro Edition 中使用最新的 Visual Fox Pro OLE DB Provider。我不能在我的 *.dtq 文件中使用 SQL 函数。我有超过 181 个 *.dtq 文件,我最终需要从 sqlscript 调用它们,但我的问题在于尝试解析 dbf 文件中的列时。我需要的列包含一个时间,即。HH:MM:SS 我需要能够解析时间列来提取小时或分钟。分钟将按 15 分钟间隔进行分段,因此,只要时间大于 0 但 < 15,我可以在一小时内提取 15 分钟,这样我就可以以 15 分钟的间隔提取数据。通常我会使用像 parse 或 parsname 或 split 或 decimal 或 decim 之类的函数,或者说去字符空间 # 然后 # 之后的字符空间。就像在 dos 中我可以使用 %TIME:~3, 2% 用于提取包含我需要的时间信息的列的分钟部分所需的信息。请帮我。提前谢谢你。

4

1 回答 1

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 (...) as QtrMinute

于 2011-02-06T14:31:17.563 回答