因此,我正在學習TSQL,並且已經分配了一個應用程序來詳細描述特定系列電影的內容。我想添加到成品中的一件事是DATEDIFF,其中我有主演員的出生日期和電影的首映日期,但是想要在首映時返回演員的年齡。在DATEDIFF函數中使用表值
我的問題是,如何指定日期,給定一個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的出生日期沒有任何價值,它可以匹配確切的系統時間。在你的情況下,它將會像DATEDIFF(Year,Bond.Birthdate,f.Premiere )。有一點需要注意的是,DATEDIFF計算跨越的閾值數量。它沒有告訴你從那天起有多少年。 –