我已经计算了几个日期的日期平均值,而我正在尝试获取平均日期的结果,但我收到以下错误:
从字符串转换日期和/或时间时转换失败。
这是我试过的SQL查询:
select
CONVERT(DATE, LEFT(convert(varchar(10), AVG(convert(int, convert(varchar(10), OnMarkDate, 112)))), 8))
from
@tbl_XMLResult
以下是表格@tbl_XMLResult
中的日期值:
'2001-10-11',
'2001-10-03',
'2001-09-24',
'2000-05-31',
'2001-10-15',
'2008-01-01'
这些日期属于date
类型。
答案 0 :(得分:1)
你在找这样的东西吗?
我计算了第一个CTE中最早的日期(2000-05-31
)的天数差异,然后我计算了那些日差的平均值(所有int
值),然后我加上这个平均值到最早的日期,获得“平均”日期。
DECLARE @input TABLE (OnMarkDate DATE)
INSERT INTO @input (OnMarkDate)
VALUES ('2001-10-11'), ('2001-10-03'), ('2001-09-24'),
('2000-05-31'), ('2001-10-15'), ('2008-01-01');
DECLARE @OldestDate DATE = '2000-05-31';
;WITH DateAndDayDiff AS
(
SELECT DayDiff = DATEDIFF(DAY, @OldestDate, OnMarkDate)
FROM @INPUT
), AverageDayDiff AS
(
SELECT AverageDiff = AVG(DayDiff)
FROM DateAndDayDiff
)
SELECT
DATEADD(DAY, AverageDayDiff.AverageDiff, @OldestDate)
FROM AverageDayDiff
当我这样做时,我会将2002-07-30
作为此日期列表的“平均”日期。