SSIS DATEDIFF 函数是一个日期/时间函数,用于计算给定两个日期字段之间经过的日期或时间边界的总数。本文将通过一个示例解释如何使用 DATEDIFF 函数,查找两个给定日期值之间差异的语法如下所示。
DATEDIFF(<<datepart>>, <<startdate>>, <<enddate>>)
datepart:DATEDIFF 函数将 datepart 视为日期或时间间隔,以识别开始日期和结束日期之间的差异。
例如,DATEDIFF(“m”, 2006-05-28, “2006-12-28) 将计算两个日期之间的总月数,结果为 7。为了演示 SSIS DATEDIFF 函数,我们使用下面带有 15 条记录的 Employee 表。

下面的列表显示了 DATEDIFF 函数中的日期部分及其描述。
- 年份 = “yyyy”
- 月份 = “m”
- 日期 = “d”
- 季度 = “q”
- 周 = “ww”
- 工作日 =”w”
- 星期几 =”y”
- 小时 = “h”
- 分钟 = “n”
- 秒 = “s”
SSIS DATEDIFF 函数
对于此 DATEDIFF 示例,我将添加一个数据流任务并双击它以进入数据流区域。接下来,添加 OLE DB 源以从上述 SQL 数据库表中读取数据。请将 OLE DB 源连接到派生列转换,因为它有助于编写 DATEDIFF 表达式并创建新列。

接下来,双击它以打开派生列转换编辑器。将 SSIS DATEDIFF 函数拖放到表达式下的行单元格中,并将 <<datepart>> 替换为 year (yyyy),将 <<startdate>> 替换为 HireDate 列,将 <<enddate>> 替换为当前日期 (GETDATE())。您可以手动删除完整的 <<startdate>> 和 <<enddate>> 表达式,或者拖放 HireDate 列也会自动替换它们。
第一个表达式返回 HireDate 和当前日期之间的总年数差异。第二个 DATEDIFF 函数表达式查找本地系统时间和 UTC 时间之间的总小时数差异。
DATEDIFF( "yyyy", [HireDate], GETDATE() )
DATEDIFF( "hh", GETDATE(), GETUTCDATE() )

单击“确定”关闭编辑器窗口。请参考 Union All Transformation、Derived Column Transformation、Built-in Functions 和 SQL Server 文章,了解 SSIS。
拖放 Union All Transformation 并将其连接到派生列。接下来,右键单击连接节点并选择启用数据查看器。请运行 SSIS DATEDIFF 函数包以查看两个日期之间的年和小时差异。
