2

我有一个表,其中有一列 DATE 类型的列,用于表示一本书的出版时间。我有一个简单的查询,我想修改它。

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

我想修改的是 Books.release_date 作为 Age 的返回值,目前它正在返回其中的 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,小数点后很多,也不确定这样的除法是否是最准确的方法?

4

2 回答 2

2

像你正在做的事情应该很好地得到你想要的结果。

这应该为您提供正确数量的小数点:

Select Books.title as Title
, ROUND(DATEDIFF(CURDATE(),Books.release_date)/365.25,1) as Age 
From Books
于 2013-06-30T17:04:07.783 回答
0

可能这是有用的

SELECT Books.title as Title, round(DATEDIFF(dd, '2005-2-5',getdate())/365.0,1) as Age FROM Books
于 2016-01-05T09:22:41.107 回答