Visual FoxPro9:datediff Sql Server函数的替代方案?
我有两个带有小时的日期,比如:'2013-01-01 12:25:32'(yyyy-mm-dd hh:mm:ss),我应该以分钟为单位找到DateA和DateB之间的差异。我该怎么做 谢谢您可以使用CTOT()函数,但由于您的字符串包含空格符号而不是“T”符号,因此应首先替换它:Visual FoxPro9:datediff Sql Server函数的替代方案?,date,visual-foxpro,difference,Date,Visual Foxpro,Difference,我有两个带有小时的日期,比如:'2013-01-01 12:25:32'(yyyy-mm-dd hh:mm:ss),我应该以分钟为单位找到DateA和DateB之间的差异。我该怎么做 谢谢您可以使用CTOT()函数,但由于您的字符串包含空格符号而不是“T”符号,因此应首先替换它: ?CTOT(CHRTRAN('2013-01-01 12:25:35', ' ', 'T'))-CTOT(CHRTRAN('2013-01-01 12:25:32', ' ', 'T')) 结果将是3。您可以使用CT
?CTOT(CHRTRAN('2013-01-01 12:25:35', ' ', 'T'))-CTOT(CHRTRAN('2013-01-01 12:25:32', ' ', 'T'))
结果将是3。您可以使用CTOT()函数,但由于字符串包含空格符号而不是“T”符号,因此应首先替换它:
?CTOT(CHRTRAN('2013-01-01 12:25:35', ' ', 'T'))-CTOT(CHRTRAN('2013-01-01 12:25:32', ' ', 'T'))
结果将是3。VFP可以轻松处理日期和日期时间数学,只要两者是相同的日期或日期/时间格式 如果数据类型是字符串格式,而不是实际的日期或日期/时间格式,那么Oleg在转换数据类型方面是正确的,但显然您已经有了VFP。试试这些来了解正在发生的事情 如果两个字段都是仅日期字段,则加法/减法基于天
ldStartDate = date( 2013, 12, 5 )
ldOtherDate = date( 2013, 11, 24 )
nDaysDiff = ldStartDate - ldOtherDate
结果是11天
计算某个月的第一个月
ldFirstOfMonth = ldStartDate - DAY( ldStartDate ) +1
由于示例day()将返回5(12月5日),因此12月5-5天=11月的最后一天+1将返回到12月1日
现在,使用日期/时间字段——日期/时间基于秒差
ldStartTime = DATETIME( 2013, 12, 5, 8, 56, 00 )
ldOtherTime = DATETIME( 2013, 11, 24, 12, 00, 00 )
nSecDiff = ldStartTime - ldOtherTime
? nSecDiff
result = 939360 seconds
? nSecDiff / 60
result = 15656 minutes
? nSecDiff / 60 / 60
result = 260.93 hours
? nSecDiff / 60 / 60 / 24
result is 10.87 days
哦。。。忘了。。。如果处理到日期/日期时间的数值,则它们分别对应于日期/时间字段的天(如用于计算月初的示例)和秒结果
所以
只要日期和日期时间格式相同,VFP就可以轻松地处理日期和日期时间数学 如果数据类型是字符串格式,而不是实际的日期或日期/时间格式,那么Oleg在转换数据类型方面是正确的,但显然您已经有了VFP。试试这些来了解正在发生的事情 如果两个字段都是仅日期字段,则加法/减法基于天
ldStartDate = date( 2013, 12, 5 )
ldOtherDate = date( 2013, 11, 24 )
nDaysDiff = ldStartDate - ldOtherDate
结果是11天
计算某个月的第一个月
ldFirstOfMonth = ldStartDate - DAY( ldStartDate ) +1
由于示例day()将返回5(12月5日),因此12月5-5天=11月的最后一天+1将返回到12月1日
现在,使用日期/时间字段——日期/时间基于秒差
ldStartTime = DATETIME( 2013, 12, 5, 8, 56, 00 )
ldOtherTime = DATETIME( 2013, 11, 24, 12, 00, 00 )
nSecDiff = ldStartTime - ldOtherTime
? nSecDiff
result = 939360 seconds
? nSecDiff / 60
result = 15656 minutes
? nSecDiff / 60 / 60
result = 260.93 hours
? nSecDiff / 60 / 60 / 24
result is 10.87 days
哦。。。忘了。。。如果处理到日期/日期时间的数值,则它们分别对应于日期/时间字段的天(如用于计算月初的示例)和秒结果
所以
@LuciferSam,更新答案,即使已接受显示日期/日期时间字段的+/-数值too@LuciferSam,更新了答案,即使已经接受,也会显示日期/日期时间字段的+/-数值