从今天的日期中减去 table 值 - SQL
Subtract table value from today's date - SQL
我正在尝试 return 根据加入日期,某人加入我们团队的年限。但是我收到一个无效的负操作错误。整个 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
函数
The DATEDIFF() function returns the time between two dates.
DATEDIFF(date1,date2)
http://www.w3schools.com/sql/func_datediff_mysql.asp
此方法只取天数差。您需要除以 365 来转换为年。要 return 一个整数,请使用 FLOOR
方法。
在你的情况下,它看起来像这样
SELECT
Profile.ID as 'ID',
(FLOOR(DATEDIFF(profile.JOIN_DATE, getdate()) / 365)) * -1 as 'Years with Org'
FROM Profile
这是我创建的示例fiddle
http://sqlfiddle.com/#!9/8dbb6/2/0
MsSQL/SQL服务器解决方案
The DATEDIFF() function returns the time between two dates.
Syntax: DATEDIFF(datepart,startdate,enddate)
这里需要注意的是,与 MySql
对应版本不同,SQL 服务器版本采用三个参数。对于您的示例,代码如下所示
SELECT Profile.ID as 'ID',
DATEDIFF(YEAR,Profile.JoinDate,GETDATE()) as difference
FROM Profile
使用 this answer 中的方法,您可以通过以下查询获得结果:
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
我正在尝试 return 根据加入日期,某人加入我们团队的年限。但是我收到一个无效的负操作错误。整个 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
函数
The DATEDIFF() function returns the time between two dates.
DATEDIFF(date1,date2)
http://www.w3schools.com/sql/func_datediff_mysql.asp
此方法只取天数差。您需要除以 365 来转换为年。要 return 一个整数,请使用 FLOOR
方法。
在你的情况下,它看起来像这样
SELECT
Profile.ID as 'ID',
(FLOOR(DATEDIFF(profile.JOIN_DATE, getdate()) / 365)) * -1 as 'Years with Org'
FROM Profile
这是我创建的示例fiddle
http://sqlfiddle.com/#!9/8dbb6/2/0
MsSQL/SQL服务器解决方案
The DATEDIFF() function returns the time between two dates.
Syntax: DATEDIFF(datepart,startdate,enddate)
这里需要注意的是,与 MySql
对应版本不同,SQL 服务器版本采用三个参数。对于您的示例,代码如下所示
SELECT Profile.ID as 'ID',
DATEDIFF(YEAR,Profile.JoinDate,GETDATE()) as difference
FROM Profile
使用 this answer 中的方法,您可以通过以下查询获得结果:
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