我需要從彼此減去2天,並在YYMMDD顯示它的年齡。計算減去日期,並示出它在DD/MM/YYYY格式
E.g.
2016-05-27 (Minus) 2015-01-15 = 1 Years, 5 Months, 16 Days
這兩個日期格式爲DATETIME
格式。
非常感謝!
我需要從彼此減去2天,並在YYMMDD顯示它的年齡。計算減去日期,並示出它在DD/MM/YYYY格式
E.g.
2016-05-27 (Minus) 2015-01-15 = 1 Years, 5 Months, 16 Days
這兩個日期格式爲DATETIME
格式。
非常感謝!
你可以看看這個文檔 https://msdn.microsoft.com/en-us/library/ms189794.aspx
DATEDIFF(日期部分,開始日期,結束日期)
然後用天的
數量獲取日期然後你就可以使用DATEADD
添加這個天數。
SELECT DATEADD(dd, 0, DATEDIFF(dd, startdate, enddate))
嗨,想你的代碼,這就是結果:日期1:2015年8月1日00:00:00.000 \t日期2:2016年1月25日13:45:01.437 \t Days1:1900至1906年-27 00:00:00.000 \t月:1900年1月6日00:00:00.000 \t年份:1900年1月2日00:00:00.000 – Noost
@Noost確保你使用'datetime2'類型,而不是datetime'的' 。 datetime的日期時間爲0001-01-01,而datetime的日期時間爲0時爲1900-01-01。在任何情況下,這都不會造成閏年。你問的是年齡計算,你不能用簡單的DATEDIFF來做到這一點 –
嘗試此查詢...
select (datediff(dd,convert(datetime,'5/5/2014',101),getdate())/365) years,
((datediff(dd,convert(datetime,'5/5/2014',101),getdate()) % 365)/30) months,
((datediff(dd,convert(datetime,'5/5/2014',101),getdate()) % 365)%30) days
結果
years months days
1 10 1
非常接近,calcs仍然是錯誤的,但我會用你的劇本玩一些。 – Noost
我想這樣的作品。
SELECT Cast(DATEDIFF(YEAR, '2015-01-15', '2016-05-27') as varchar(25)) + ' Years, '
+ Cast(DATEDIFF(MONTH, '2015-01-15', '2016-05-27') % 12 as varchar(25)) + ' Months, '
+ Cast(DATEDIFF(DAY, Dateadd(Month, DATEDIFF(MONTH, '2015-01-15', '2016-05-27') % 12 ,Dateadd(Year, DATEDIFF(YEAR, '2015-01-15', '2016-05-27'), '2015-01-15')), '2016-05-27') as varchar(25)) + ' Days'
結果:
1 Years, 4 Months, 12 Days
你有你自己嘗試新鮮事物? –
日期沒有格式,它們是二進制的。 'DATEFORMAT'只適用於格式化/解析字符串,應該避免。您可能有任何問題,例如使用字符串而不是日期,使用不正確的字符串格式,使用錯誤的函數。請發佈代碼。在任何情況下,有沒有* *類型,可以在返回方式的時間跨度你問 –
我試着使用DATEDIFF和DATEADD各種組合,但它總是會跑過來,例如91天而不是例如1天3個月。如果這是有道理的? – Noost