非常简单的月份求差问题请教! select datediff(mm,'2010-01-10',getdate()) 目前计算出来的是3,但其实不应该是3个月,到明天才算3个月!怎么能得出2.几 请指教! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 datediff mm的仅仅是月份的差值。如果想得到多少天的话,用dd吧。2.X个月,貌似不太好理解。 declare @dt1 as datetimedeclare @dt2 as datetimeset @dt1 = '2010-01-10'set @dt2 = getdate()select case when datepart(dd,@dt1) > datepart(dd,@dt2) then ltrim(datediff(mm,@dt1,@dt2) - 1) + '月' + ltrim(30 - datepart(dd,@dt1) + datepart(dd,@dt2)) + '天' else ltrim(datediff(mm,@dt1,@dt2)) + '月' + ltrim(datepart(dd,@dt1) - datepart(dd,@dt2)) + '天' end/* ---------------------------- 2月29天(所影响的行数为 1 行)*/set @dt1 = '2010-01-08'select case when datepart(dd,@dt1) > datepart(dd,@dt2) then ltrim(datediff(mm,@dt1,@dt2) - 1) + '月' + ltrim(30 - datepart(dd,@dt1) + datepart(dd,@dt2)) + '天' else ltrim(datediff(mm,@dt1,@dt2)) + '月' + ltrim(datepart(dd,@dt2) - datepart(dd,@dt1)) + '天' end/* ---------------------------- 3月1天(所影响的行数为 1 行)*/ select datediff(mm,'2010-01-10',getdate())-case when day('2010-01-10')> day(getdate())then 1 else 0 end declare @dt1 as datetimedeclare @dt2 as datetimeset @dt1 = '2010-01-10'set @dt2 = getdate()select case when datepart(dd,@dt1) > datepart(dd,@dt2) then ltrim(datediff(mm,@dt1,@dt2) - 1) + '月' + ltrim((30 - datepart(dd,@dt1) + datepart(dd,@dt2))/30.00) + '天' else ltrim(datediff(mm,@dt1,@dt2)) + '月' + ltrim((datepart(dd,@dt1) - datepart(dd,@dt2))/30.00) + '天' end/* -------------------------------------------------------- 2月0.966666天(所影响的行数为 1 行)*/set @dt1 = '2010-01-08'select case when datepart(dd,@dt1) > datepart(dd,@dt2) then ltrim(datediff(mm,@dt1,@dt2) - 1) + '月' + ltrim((30 - datepart(dd,@dt1) + datepart(dd,@dt2))/30.00) + '天' else ltrim(datediff(mm,@dt1,@dt2)) + '月' + ltrim((datepart(dd,@dt2) - datepart(dd,@dt1))/30.00) + '天' end/* -------------------------------------------------------- 3月0.033333天(所影响的行数为 1 行)*/ 怎么用一个SQL语句实现下述目的? 求一个SQL语句 如何导出脚本? 触发器,如何判断表A中的字段是否等于当前时间,再改变表B中的某个值 connection.commit 方法执行成功,但数据库中事务未提交。 请问两个表中都有相同字段名称,出现列名不明确错误如何解决? 如何使用DAO来进行BLOB的操作 SQL Server无法连接到服务器(错误18456) 如何做一个有界面与用户交互的SQL数据抽取? 触发器的执行问题!!! 请教一个关于2个表查询效率的问题 将 varchar 值 'null' 转换为数据类型为 int 的列时发生语法错误
declare @dt2 as datetimeset @dt1 = '2010-01-10'
set @dt2 = getdate()select case when datepart(dd,@dt1) > datepart(dd,@dt2) then ltrim(datediff(mm,@dt1,@dt2) - 1) + '月' + ltrim(30 - datepart(dd,@dt1) + datepart(dd,@dt2)) + '天'
else ltrim(datediff(mm,@dt1,@dt2)) + '月' + ltrim(datepart(dd,@dt1) - datepart(dd,@dt2)) + '天'
end
/*
----------------------------
2月29天(所影响的行数为 1 行)
*/set @dt1 = '2010-01-08'select case when datepart(dd,@dt1) > datepart(dd,@dt2) then ltrim(datediff(mm,@dt1,@dt2) - 1) + '月' + ltrim(30 - datepart(dd,@dt1) + datepart(dd,@dt2)) + '天'
else ltrim(datediff(mm,@dt1,@dt2)) + '月' + ltrim(datepart(dd,@dt2) - datepart(dd,@dt1)) + '天'
end
/*
----------------------------
3月1天(所影响的行数为 1 行)
*/
select datediff(mm,'2010-01-10',getdate())-case when day('2010-01-10')> day(getdate())then 1 else 0 end
declare @dt2 as datetimeset @dt1 = '2010-01-10'
set @dt2 = getdate()select case when datepart(dd,@dt1) > datepart(dd,@dt2) then ltrim(datediff(mm,@dt1,@dt2) - 1) + '月' + ltrim((30 - datepart(dd,@dt1) + datepart(dd,@dt2))/30.00) + '天'
else ltrim(datediff(mm,@dt1,@dt2)) + '月' + ltrim((datepart(dd,@dt1) - datepart(dd,@dt2))/30.00) + '天'
end
/*
--------------------------------------------------------
2月0.966666天(所影响的行数为 1 行)
*/set @dt1 = '2010-01-08'select case when datepart(dd,@dt1) > datepart(dd,@dt2) then ltrim(datediff(mm,@dt1,@dt2) - 1) + '月' + ltrim((30 - datepart(dd,@dt1) + datepart(dd,@dt2))/30.00) + '天'
else ltrim(datediff(mm,@dt1,@dt2)) + '月' + ltrim((datepart(dd,@dt2) - datepart(dd,@dt1))/30.00) + '天'
end
/*
--------------------------------------------------------
3月0.033333天(所影响的行数为 1 行)*/