在阅读了该主题并被建议使用后DateDiff。我编写的函数无法提供我想要的答案。客户现在想要完成检查清单需要多长时间。我有一个CreationDate和CompletionDate。我需要知道花了多少年,几个月,几周和几天。如果是2天,则为“ 2天”,没有年份。该功能会扣除年数,然后尝试检查月数,周数和天数。如果可用,则仅给出结果。似乎DateDiff是问题所在...或者我是无法理解的问题DateDiff。它甚至返回一个星期,日期相差4天,这没有任何意义。它应该返回两个日期内的星期数,而不用关心它的开始时间。
这是代码
ALTER FUNCTION [dbo].[DateRangeText]
(@FromDate DATETIME, @ToDate DATETIME)
RETURNS VARCHAR(MAX)
AS
BEGIN
DECLARE @Result AS VARCHAR(MAX);
SET @Result = '';
DECLARE @TmpS AS VARCHAR(MAX);
SET @TmpS = '';
DECLARE @Years AS INT;
SET @Years = DATEDIFF(year, @FromDate, @ToDate);
IF (@Years > 0)
BEGIN
IF (@Years = 1)
SET @TmpS = ' Year ';
ELSE
SET @TmpS = ' Years ';
SET @Result = @Result + CAST(@Years AS VARCHAR) …Run Code Online (Sandbox Code Playgroud)