MyException - 我的异常网
当前位置:我的异常网» Sql Server » 根据生日查询多少个月?解决方案

根据生日查询多少个月?解决方案

www.MyException.Cn  网友分享于:2013-06-16  浏览:10次
根据生日查询多少个月?
SQL code

--当前时间是假如是 6月6日
1  select datediff(Month,'2012-06-1 00:00:00.000',getdate()) --这个查询就是0
2  select datediff(Month,'2012-05-16 00:00:00.000',getdate()) --这个查询等于1


1 不到一个月是0 好理解
2 也不到一个月,为什么是1?
难道用的函数不对?
我要的结果 根据生日和当前时间查询多少个月。 如果满一个月 就是1 不满一个月 就是0。
满一个月,不满两个月 显示2
满2个月,不满三个月 显示3
.....
....
...以此类推
 
该如何查询 谢谢高手回答

------解决方案--------------------
你那个是函数把日期的月份取出来做差的,不考虑天数。你想考虑的话就
SQL code

1  select datediff(dd,'2012-06-1 00:00:00.000',getdate()) --这个查询就是0
2  select datediff(dd,'2012-05-16 00:00:00.000',getdate()) --这个查询等于1

------解决方案--------------------
SQL code
declare @dt datetime
set @dt='2012-05-16 00:00:00.000'
select 
  case 
    when day(@dt)>day(getdate())
      then datediff(Month,@dt,getdate())-1
    else datediff(Month,@dt,getdate())
  end

------解决方案--------------------
SQL code

IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE name = 'tba')
BEGIN
    DROP TABLE tba
END
GO
CREATE TABLE tba
(
    ID INT,
    Date VARCHAR(10)
)
GO
INSERT INTO tba
SELECT 1,'2012-05-12' UNION
SELECT 1,'2012-06-11' UNION
SELECT 1,'2012-04-15' UNION
SELECT 1,'2012-03-18' UNION
SELECT 1,'2012-05-19' 


SELECT DATE,CASE WHEN DATEADD(MONTH,DATEDIFF(MONTH,Date,GETDATE()),Date) <= GETDATE() THEN DATEDIFF(MONTH,Date,GETDATE())
                 ELSE DATEDIFF(MONTH,Date,GETDATE()) - 1 END AS '月份'         
FROM tba

DATE    月份
2012-03-18    2
2012-04-15    1
2012-05-12    1
2012-05-19    0
2012-06-11    0

------解决方案--------------------
探讨
满一个月 就是1 不满一个月 就是0。
满一个月,不满两个月 显示2
满2个月,不满三个月 显示3

------解决方案--------------------
SQL code
declare
    @date1 datetime,
    @date2 datetime
select
    @date1 = '2012-02-29',
    @date2 = '2012-03-28'

select 
    datediff(month, @date1, @date2) +  
    (case when day(@date2) > day(@date1) then 1 else 0 end) -    --满一个月,不满两个月 显示2
    (case when datediff(month, @date1, @date2) = 1 and day(@date2) < day(@date1) then 1 else 0 end)  --如果满一个月 就是1 不满一个月 就是0

------解决方案--------------------
DATEDIFF(MONTH,日期1,日期2)是按月份的差,即'2012-6-1'与'2012-6-6'是同一月份,差是0 ,而'2012-5-16'差是1.楼主所说的满一个月是什么概念,30天称一个月吗? 满一个月是1,满一个月不满2个月是二,这个怎么界定?概念搞清楚,就不难了,可以按天算!

文章评论

鲜为人知的编程真相
鲜为人知的编程真相
中美印日四国程序员比较
中美印日四国程序员比较
代码女神横空出世
代码女神横空出世
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
那些争议最大的编程观点
那些争议最大的编程观点
漫画:程序员的工作
漫画:程序员的工作
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
旅行,写作,编程
旅行,写作,编程
总结2014中国互联网十大段子
总结2014中国互联网十大段子
程序员必看的十大电影
程序员必看的十大电影
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
我是如何打败拖延症的
我是如何打败拖延症的
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
老程序员的下场
老程序员的下场
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
每天工作4小时的程序员
每天工作4小时的程序员
编程语言是女人
编程语言是女人
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
 程序员的样子
程序员的样子
Java程序员必看电影
Java程序员必看电影
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
程序员应该关注的一些事儿
程序员应该关注的一些事儿
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
我的丈夫是个程序员
我的丈夫是个程序员
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
为什么程序员都是夜猫子
为什么程序员都是夜猫子
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
程序员和编码员之间的区别
程序员和编码员之间的区别
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
一个程序员的时间管理
一个程序员的时间管理
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
程序员都该阅读的书
程序员都该阅读的书
如何成为一名黑客
如何成为一名黑客
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有