2013-06-30 42 views
2

我有一个表,其中有一个DATE类型的列的列,当一本书已经发布。我有一个简单的查询,我想修改。使用datediff与年1小数

SELECT Books.title as Title, Books.release_date as Age FROM Books 

我想修改的东西是Books.release_date的返回值的年龄,目前它返回的日期字段,它是在那里(例如,2005年2月5日)。

我实际上希望看到的值是它作为十进制数被释放的年份(最多1个小数点),所以它会显示年龄(例如8.2)。

我相信我会需要沿着

Select Books.title as Title, DATEDIFF(CURDATE(),Books.release_date)/365.25 as Age 
From Books 

我的结果行做一些事情被显示为13.4949,这是许多小数点,也不能肯定,如果这样的划分是最准确的方式?

+0

从技术上讲,它应该使用公历使用365.2425。不是说这里会有很大的变化...... – PinnyM

回答

2

像你正在做的事情那样的分部应该很好地工作以得到你要找的结果。

这应该让你小数点适量:

Select Books.title as Title 
, ROUND(DATEDIFF(CURDATE(),Books.release_date)/365.25,1) as Age 
From Books 
0

可能这是有用的

SELECT Books.title as Title, round(DATEDIFF(dd, '2005-2-5',getdate())/365.0,1) as Age FROM Books