【问题标题】:How to get Interval from two dates?如何从两个日期获得间隔?
【发布时间】:2015-10-20 03:42:23
【问题描述】:

我正在尝试使用 DATEDIFF 从两个日期获取间隔(年份),但它只计算年份。 例如,

SELECT DATEDIFF(year, '2005-01-03', '2006-01-01');

结果是1,但得到的结果应该是0,因为日期还是1月1日。

还有其他方法吗?

【问题讨论】:

  • 当闰年开始时,您是否关心结果的准确性?
  • 一点也不,所以问题来了,我想做这个查询Select * From Employee where (DATEDIFF(DAY, HireDate, GETDATE())/365)%6=0 AND (GETDATE() BETWEEN DATEADD(Day, -6, CAST(STUFF(CONVERT(VARCHAR(23), HireDate,121),1, 4, CAST(YEAR(GETDATE()) AS VARCHAR(4)))AS DATETIME)) AND DATEADD(Month, 6, CAST(STUFF(CONVERT(VARCHAR(23), HireDate,121),1, 4, CAST(YEAR(GETDATE()) AS VARCHAR(4)))AS DATETIME))) 显示今年雇用前后6 年或6 个月的所有员工。这可能吗?
  • 您评论中的问题与原始问题有很大不同。我建议提出一个新问题。清楚地解释你的问题是什么。显示您的查询并解释您要达到的目标。提供一些示例、几行示例数据以及您期望的查询结果。如果你问这样的问题,你很快就会得到很好的答案。目前(对我而言)不可能在评论中理解您的问题。

标签: sql-server validation date intervals datediff


【解决方案1】:
SELECT DATEDIFF(DAY, '2005-01-03', '2006-01-01')/365;

【讨论】:

    【解决方案2】:
    SELECT FLOOR(DATEDIFF(day, '2005-01-03', '2006-01-01')/365)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-08
      相关资源
      最近更新 更多