首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从今天的日期- SQL中减去表值

问从今天的日期- SQL中减去表值
EN

Stack Overflow用户
提问于 2016-03-16 20:56:03
回答 4查看 1.2K关注 0票数 0

我正试图根据他们的加入日期来返回我们团队中的一个成员的年数。但是,我得到了一个无效的减号操作错误。整个getdate()不是我的朋友,所以我确信我的语法是错的。

有人能帮忙吗?

代码语言:javascript
复制
SELECT 
  Profile.ID as 'ID', 
  dateadd(year, -profile.JOIN_DATE, getdate()) as 'Years with Org'
FROM  Profile
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-03-16 21:03:09

MySQL解决方案

使用DATE_DIFF函数

函数返回两个日期之间的时间。 数字森林论坛(date1,date2)

mysql.asp

此方法只取天数差。你需要转换成年数,除以365。若要返回整数,请使用FLOOR方法。

在你的例子中,它会是这样的

代码语言:javascript
复制
SELECT 
  Profile.ID as 'ID', 
  (FLOOR(DATEDIFF(profile.JOIN_DATE, getdate()) / 365)) * -1 as 'Years with Org'
FROM  Profile

下面是我创建的一个小提琴示例

http://sqlfiddle.com/#!9/8dbb6/2/0

MsSQL / Server解决方案

函数返回两个日期之间的时间。 语法:DATEDIFF(日期部分、开始日期、结束日期)

这里需要注意的是,与MySql版本不同的是,Server版本包含三个参数。对于您的示例,代码如下所示

代码语言:javascript
复制
SELECT Profile.ID as 'ID', 
       DATEDIFF(YEAR,Profile.JoinDate,GETDATE()) as difference
FROM Profile

datediff.asp

票数 0
EN

Stack Overflow用户

发布于 2016-03-16 21:02:03

看来你用的是T?如果是这样的话,应该使用DATEDIFF:

代码语言:javascript
复制
DATEDIFF(year, profile.JOIN_DATE, getdate())
票数 0
EN

Stack Overflow用户

发布于 2016-03-16 21:04:46

使用this answer中的方法,您可以使用以下查询获得结果:

代码语言:javascript
复制
SELECT 
  Profile.ID as 'ID', 
  YEAR(getdate()) - YEAR(profile.JOIN_DATE) - (DATE_FORMAT(getdate(), '%m%d') < DATE_FORMAT(profile.JOIN_DATE, '%m%d')) as 'Years with Org'
FROM  Profile
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36046759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档