Использование последней версии поставщика 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% для извлечения информации, которая мне нужна для минутного раздела столбца, содержащего нужную мне информацию о времени. Помогите пожалуйста мне. Заранее благодарю.
Синтаксис SQL для запроса файла .dtq .dbf
Ответы (1)
Хотя я не знаком напрямую с файлами .dtq (если только они не являются просто переименованными файлами .dbf), VFP имеет функции даты/времени для получения различных компонентов поля даты для вас. Однако не существует типа данных только для компонента "ВРЕМЯ". Обычно он просто хранится как строковый (символьный) столбец. Однако, если столбец содержит дату/время, вы можете использовать
HOUR( YourDateTimeColumn ) -- will return based on 24 hour clock... 1pm = 13, 2pm = 14, etc
MINUTE( YourDateTimeColumn )
Однако ваш пример показывает ЧЧ: ММ: СС, поэтому я собираюсь сохранить просто строку символов. Так что я бы справился...
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
person
DRapp
schedule
06.02.2011