有没有办法让我按照文件的日期限制我的数组?我想要驱动器中的所有文件,但只有当文件上的日期是>最后存储的导入日期时间。当我在" asterisk.asterisk"上构建数组时这需要太长时间。有什么想法吗?
fsLAST = ''
USE CMEMAILS IN 0
SELECT CMEMAILS
SET ORDER TO DTSTAMP && DTSTAMP
GO BOTTOM
fsLAST = CMEMAILS.DTSTAMP
local array MyFiles[1,5]
nFilesFound = ADIR( MyFiles, ALLTRIM(cmcontrol.cpath) + '*.*')
for i = 1 to nFilesFound
SELECT cmemails
DO CASE
CASE DATETIME(YEAR(MyFiles[ i, 3]), MONTH(MyFiles[ i, 3]), DAY(MyFiles[ i, 3]), VAL(LEFT(MyFiles[ i, 4], 2)), VAL(SUBS(MyFiles[ i, 4], 4, 2)), VAL(SUBS(MyFiles[ i, 4],7,2))) > fsLAST
insert into cmemails (cprimary, csubject, ddate, dtime, cattribs, dtstamp) values ;
(generateGuid(26), MyFiles[ i, 1], MyFiles[ i, 3], MyFiles[ i, 4], MyFiles[ i, 5],DATETIME(YEAR(MyFiles[ i, 3]), MONTH(MyFiles[ i, 3]), DAY(MyFiles[ i, 3]), VAL(LEFT(MyFiles[ i, 4], 2)), VAL(SUBS(MyFiles[ i, 4], 4, 2)), VAL(SUBS(MyFiles[ i, 4],7,2))) )
ENDCASE
endfor
答案 0 :(得分:1)
因为数组的元素3为日期而4为时间,所以你可以这样做..
for i = ...
ltFileTime = CTOT( DTOC( MyFiles[1,3] ) + " " + MyFiles[1,4] )
if ltFileTime > fsLast
*/ do your insert...
endif
endfor
你可能需要确保
SET CENTURY ON
确保正确的日期/时间转换。
您还可以使用 ltFileTime 代替DATETIME(年,月,日等)以提高可读性...