首页 > 解决方案 > 在 SQL 中使用 smallint 和 datetime 数据类型计算日期差

问题描述

我有一列存储年份,就像smallint在我的 ms sql server 数据库中一样。我有另一列以日期时间格式存储日期。找出两者之间年份差异的正确方法是什么?

我试过这个,但我不确定它是否是正确的方法

DATEPART(YEAR, show_held) - born

其中 show_held 列属于 datetime 数据类型,born 列属于smallint

标签: sql-server

解决方案


您可以DATEPART用来获取 SQL 中的日期部分。

正如您所说,您需要日期的年份,然后DATEPART( YEAR, [value])为您提供int类型值。这是一个整数类型值,并在任何需要int类型值的过程中进一步使用。现在这year是纯整数值,date不再有任何关系。

谈到您的问题,您的列中存在另一个年份值作为int类型,您希望找到它们之间的差异,这可以很容易地计算出来。

  DATEPART(YEAR, show_held) - born

所以你最终的查询给出了你预期的正确结果,因为它们都是int类型。

有关您的更多信息,Datepart您可以找到此链接。关联


推荐阅读