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

从今天的日期减去表值-SQL,sql,subtraction,getdate,Sql,Subtraction,Getdate,我试图根据加入日期返回某人加入我们团队的年数。但是,我得到一个无效的减号操作错误。整个getdate不是我的朋友,所以我确信我的语法是错误的 有人能帮忙吗 SELECT Profile.ID as 'ID', dateadd(year, -profile.JOIN_DATE, getdate()) as 'Years with Org' FROM Profile 看起来你在用T-SQL?如果是,则应使用DATEDIFF: DATEDIFF(year, profile.JOIN_D

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

有人能帮忙吗

SELECT 
  Profile.ID as 'ID', 
  dateadd(year, -profile.JOIN_DATE, getdate()) as 'Years with Org'
FROM  Profile

看起来你在用T-SQL?如果是,则应使用DATEDIFF:

DATEDIFF(year, profile.JOIN_DATE, getdate())
MySQL解决方案

使用DATE_DIFF函数

DATEDIFF函数返回两个日期之间的时间

DATEDIFFdate1,date2

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

在你的情况下,看起来是这样的

SELECT 
  Profile.ID as 'ID', 
  (FLOOR(DATEDIFF(profile.JOIN_DATE, getdate()) / 365)) * -1 as 'Years with Org'
FROM  Profile
这是我制作的小提琴的一个例子

MsSQL/SQL Server解决方案

DATEDIFF函数返回两个日期之间的时间

语法:DATEDIFFdatepart、startdate、enddate

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

SELECT Profile.ID as 'ID', 
       DATEDIFF(YEAR,Profile.JoinDate,GETDATE()) as difference
FROM Profile
使用中的方法,可以通过以下查询获得结果:

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
如果这是MS SQL:

    SELECT 
    Profile.ID as 'ID', 
    DATEDIFF(YEAR,Profile.JoinDate,GETDATE())
    FROM  Profile

您可能需要DATE_SUB,这是MSSQL还是MYSQL?我不记得DATEADD是MYSQLDATE中的一个函数。Date_ADD是MYSQLDATE中的一个函数。有没有办法计算到当天?例如,如果有人加入了2010年6月1日,而今天是2016年5月1日,则应返回5。2016年6月1日或之后,应返回6。