2015-11-07 44 views
0

我是新的visual foxpro。我正在尝试编写sql语句。Visual Foxpro - 减去两列数字日期和比较结果的具体日期

有两列日期,数据类型是数字。

列日期格式为YYYYMMDD格式。 B列日期采用YYYYMM格式。 DD不可用,因此我只比较YYYYMM。

我需要减去或找到特定日期之间的差异,例如, 2015年8月31日和列A和B的日期。一旦我有所不同,我需要比较,看看列B中的差异是否大于列A.

我所认为的是使用substr和split日期为YYYY和MM。然后我从特定日期中减去它,然后比较YYYY部分以查看列B是否大于列A.

+0

如果你确实有一个选择,我会建议你远离从Visual FoxPro获得任何新的开发...它不再是受支持的产品:https://support.microsoft.com/en-us/lifecycle?p1=7992 – sstan

+1

“20150831”和“201508”之间的区别是什么'? –

回答

1

您的描述听起来好像columnA/100会给出类似的格式。

所以,如果你有测试数据,如这些

CREATE CURSOR test (columnA Num(8), columnB Num(6)) 
INSERT INTO test VALUES (20150802, 201508) 
INSERT INTO test VALUES (20150712, 201506) 

...你可以在那里colmumnB等于转换的所有行(columnA):

SELECT * FROM test WHERE INT(columnA/100) = columnB 

...或获取A和B之间的所有行的差异:

SELECT INT(columnA/100) - columnB FROM test 

或者,如果您有一个日期类型参数,则可以例如获取所有行其中columnB将匹配参数:

d = DATE(2015,8,31) 
SELECT * FROM test WHERE columnB = YEAR(d) * 100 + MONTH(d) 

如果你想要做不同的事情,我建议你编辑的问题,并添加更多的细节