【问题标题】:Visual FoxPro9 : Alternative to datediff Sql Server Function?Visual FoxPro9:datediff Sql Server 函数的替代方案?
【发布时间】:2013-12-05 11:42:52
【问题描述】:

我有 2 个日期,小时数如下:'2013-01-01 12:25:32' (yyyy-mm-dd hh:mm:ss) 我应该以分钟为单位找到 DateA 和 DateB 之间的差异。我该怎么做?

谢谢

【问题讨论】:

    标签: date visual-foxpro difference


    【解决方案1】:

    只要日期和日期/时间格式相同,VFP 就可以轻松处理日期和日期时间数学。

    如果数据类型是字符串格式与实际日期或日期/时间格式,Oleg 关于转换数据类型是正确的,但您显然可以使用 VFP。尝试其中一些以了解正在发生的事情。

    如果两个字段都是 DATE ONLY,则加/减基于 DAYS

    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 日。

    现在,使用日期/时间字段 -- 日期/时间基于 SECONDS 差异

    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
    

    哦...忘记了...如果处理日期/日期时间的数值,它们分别对应于日期(如在示例中计算一个月的第一天)和日期/时间字段的秒结果。

    所以

    ? ldStartDate + 10 
    would result in Dec 5 + 10 days or Dec 15th
    
    ? ldStartDate - 3
    would result in Dec 5 - 3 days or Dec 2nd
    
    ** from when ldStartTime initially set to Dec 5 at 8:56:00am
    ? ldStartTime + 20
    would be Dec 5, 8:56:20am
    
    ? ldStartTime + (20*60)
    would be Dec 5, 8:56:00am + 20 MINUTES = 9:16am
    
    ? ldStartTime + (1*60*60)
    would be Dec 5, 8:56:00am + 1 HOUR = 9:56am
    
    ? ldStartTime + (1*60*60*24)
    would be Dec 5, 8:56:00am + 1 DAT = Dec 6, 8:56am
    

    【讨论】:

    • @LuciferSam,即使已经接受在日期/日期时间字段中显示 +/- 数值,也已更新答案
    【解决方案2】:

    您可以使用 CTOT() 函数,但由于您的字符串包含空格符号而不是 'T' 符号,因此应先将其替换:

    ?CTOT(CHRTRAN('2013-01-01 12:25:35', ' ', 'T'))-CTOT(CHRTRAN('2013-01-01 12:25:32', ' ', 'T'))
    

    结果将是 3。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-14
      • 1970-01-01
      • 1970-01-01
      • 2022-01-07
      • 1970-01-01
      • 1970-01-01
      • 2011-12-29
      相关资源
      最近更新 更多