Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual FoxPro9:datediff Sql Server函数的替代方案?_Date_Visual Foxpro_Difference - Fatal编程技术网

Visual FoxPro9:datediff Sql Server函数的替代方案?

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

我有两个带有小时的日期,比如:'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。

您可以使用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,更新了答案,即使已经接受,也会显示日期/日期时间字段的+/-数值