Синтаксис SQL для запроса файла .dtq .dbf - PullRequest
0 голосов
/ 28 января 2011

Использование новейшего поставщика OLE DB для Visual Fox Pro в Microsoft Visual Studio 2008 Pro Edition. Я не могу использовать функции SQL внутри моих файлов * .dtq. У меня есть более 181 * .dtq файлов, которые мне нужно вызывать из sqlscript, но моя проблема заключается в попытке проанализировать столбец в файле dbf. Столбец, который мне нужен, содержит время, т.е. ЧЧ: ММ: СС Мне нужно разобрать столбец времени, чтобы получить только час или минуты. Минуты будут разделены на 15-минутные интервалы, т. Е. 15 часов в час, которые я могу вытащить, если время> 0, но <15, так что я могу получать данные в течение 15 минут. Обычно я бы использовал такую ​​функцию, как parse или parsname или split, decimal или decim, или что-то, что говорит перейти к символьному пространству #, а затем # символьному пространству после этого. Как и в DOS, я могу использовать% TIME: ~ 3,2%, чтобы получить информацию, которая мне нужна для минутного раздела столбца, который содержит информацию о времени, которая мне нужна. Пожалуйста, помогите мне. Спасибо заранее. </p>

1 Ответ

0 голосов
/ 06 февраля 2011

Хотя я не знаком напрямую с файлами .dtq (если они не являются просто переименованными файлами .dbf), в VFP есть функции даты / времени, позволяющие получать различные компоненты поля даты.Тем не менее, нет типа данных только для компонента «ВРЕМЯ».Обычно он хранится в виде строкового (символьного) столбца.Однако, если столбец 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, </p>

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

...