sql - 为什么 Datediff 函数显示不同的值?

标签 sql sql-server

当我执行以下查询时,我得到不同的结果。

SELECT Datediff(year, 0, Getdate());

结果是 115

当我使用它时,我得到另一个结果:

SELECT Datediff(year, 1900, Getdate());

结果是 110

实际上在 SQL Server 中,它将取自 1900-01-01,但为什么这些显示不同的值?

最佳答案

尝试解释一下逻辑:

select cast(0 as datetime)
select cast(1 as datetime)

整数被解释为自 1900-01-01 以来的天数,而字符串值(例如“1900”)将被解释为日期格式。

从 1900 年 1 月 1 日算起的 1900 天是 1905 年 3 月 16 日,距 1900 年已有五年,距现在(2015 年)已有 110 年。

关于sql - 为什么 Datediff 函数显示不同的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31132387/

相关文章:

mysql - PrestaShopDatabaseException MySQL 服务器在迁移到 VPS 后消失了

c# - 如何使用 C# 和 SQL 将表值参数传递给用户定义的数据表

sql - 在重新启动应用程序或数据库连接之前,DBGrid 数据不会更新

sql - Oracle sql中 "%Type"是什么意思?

动态按用户id和日期范围sql分组查询结果

mysql - 是否可以根据输入参数之一来决定 SQLWhere 子句的条件?

sql - 如何使用 Powershell 检查 SQL Server 版本?

sql-server - SQL Server 2008 - 捕获所有到达服务器的 SQL 语句

sql - 如何备份 SQL 2008 表和存储过程?

sql-server - SQL 2005 发布者和 SQL 2008 订阅者之间可以进行复制吗?