sql-server - 在 SQL 中使用 smallint 和 datetime 数据类型计算日期差
问题描述
我有一列存储年份,就像smallint
在我的 ms sql server 数据库中一样。我有另一列以日期时间格式存储日期。找出两者之间年份差异的正确方法是什么?
我试过这个,但我不确定它是否是正确的方法
DATEPART(YEAR, show_held) - born
其中 show_held 列属于 datetime 数据类型,born 列属于smallint
解决方案
您可以DATEPART
用来获取 SQL 中的日期部分。
正如您所说,您需要日期的年份,然后DATEPART( YEAR, [value])
为您提供int
类型值。这是一个整数类型值,并在任何需要int
类型值的过程中进一步使用。现在这year
是纯整数值,date
不再有任何关系。
谈到您的问题,您的列中存在另一个年份值作为int
类型,您希望找到它们之间的差异,这可以很容易地计算出来。
DATEPART(YEAR, show_held) - born
所以你最终的查询给出了你预期的正确结果,因为它们都是int
类型。
有关您的更多信息,Datepart
您可以找到此链接。关联
推荐阅读
- ethereum - 最近签的Clique POA 一定要等别人
- html - 如何在纯 html 中禁用 ctrl+u amd F12
- r - 在运行 if else 循环时管理数据帧中的 NA 值
- javascript - CoffeeScript 错误与实际代码不同
- json - 如何在折线传单周围添加多边形
- html - 为什么可以在snippets.json中自定义css缩写而不是html:5?
- asp.net-mvc - AngularJS 5 在项目中的使用
- arrays - 在数组中查找重复连续值的最短方法
- java - Spring Boot Devtools如何在独立模块中重新加载Maven多个依赖模块?
- r - 提取 R 中 DT 每一行的第 n 列,其中 n 是 DT 中行数的向量