【发布时间】:2015-02-10 23:17:49
【问题描述】:
我正在使用DateDiff 函数来查找两个日期之间的月数。但我面临的问题是,如果差值是 1 个月和 3 天,它不是 2 个月。
SELECT *
FROM tablename
WHERE
DATEDIFF(month, CONVERT(DATE, CONVERT(DATE, '20/10/2013', 103), 120),
CONVERT(DATE, CONVERT(DATE, '25/11/2013', 103), 120)) > 2
结果应该是 2,但它给出了 1
表中的日期列是varchar,类型值存储为dd/mm/yyyy。即使是一个月中的一天也应该计算为1个月
【问题讨论】:
-
为什么哦为什么哦为什么? “表中的日期列是varchar类型值存储为dd/mm/yyyy。”期望如何排序?
-
没有其他方法可以完成这项工作吗?
-
即使在日期时间字段上它也给出相同的结果
-
您的假设是错误的 -
DATEDIFF会查看您告诉它的项目 - 如果您告诉它查看 MONTH,它将仅 查看月份 - 2013 年 10 月和 2013 年 11 月相差 1 个月 - 所以答案正确
标签: sql-server sql-server-2008 datediff