【发布时间】:2016-07-24 12:00:45
【问题描述】:
所以我正在学习 TSQL,并被分配了一个应用程序,该应用程序详细介绍了某个系列电影的内容。我想添加到成品中的一件事是 DATEDIFF,其中我有主要演员的出生日期和电影的首映日期,但想返回首映时演员的年龄。
我的问题是,如果表格中已经存在这些日期,我该如何指定日期?
表格示例如下。
债券
BondID FirstName LastName Birthdate
1 Sean Connery 8/25/1930
2 George Lazenby 9/5/1939
3 Roger Moore 10/14/1927
4 Timothy Dalton 3/21/1946
5 Pierce Brosnan 5/16/1953
6 Daniel Craig 3/2/1968
电影
ID BondID FilmTitle Premiere
1 1 Dr. No 1963-05-08
2 1 From Russia With Love 1974-04-08
3 1 Goldfinger 1964-12-22
4 1 Thunderball 1965-12-29
这是我目前拥有的。
SELECT b.Birthdate, f.Premiere, b.FirstName, b.LastName, f.FilmTitle
FROM Bond b INNER JOIN FilmID f ON b.BondID = f.BondID
WHERE b.BondID = 1
SELECT DATEDIFF(YEAR, GETDATE(), GETDATE()) AS "YearDif"
WHERE GETDATE() = Bond.Birthdate AND GETDATE() = f.Premiere
数据
Birthdate Premiere FirstName LastName FilmTitle
1 1930-08-25 1963-05-08 Sean Connery Dr. No
2 1930-08-25 1974-04-08 Sean Connery From Russia With Love
3 1930-08-25 1964-12-22 Sean Connery Goldfinger
4 1930-08-25 1965-12-29 Sean Connery Thunderball
我想添加一列,说明首映时演员的年龄...我想我知道那个...但是...
我知道 DATEDIFF 部分的第二部分不正确,但是如何告诉 DATEDIFF 从哪里获取日期值?
任何帮助都会很棒!
【问题讨论】:
-
您可能需要阅读有关 GETDATE() 的信息。它返回当前系统时间。这意味着您的 DATEDIFF 将始终返回 0。我只是假设您没有与确切系统时间匹配的 Premiere Birthdate 值。在您的情况下,它将类似于 DATEDIFF(Year, Bond.Birthdate, f.Premiere )。需要注意的一件事是 DATEDIFF 计算跨越的阈值的数量。它不会告诉你距离那个日期有多少年。
标签: sql-server tsql date datediff