我正在使用登记证,它需要婴儿的年龄--可能是几年、几个月或几天。我使用了= DateDiff("YYYY",Fields!IssuedOnORNo.Value, Fields!CertificationDate.Value),但是当我将它更改为月或日时,它只产生相同的年数。我想要的是,它会计算孩子的年龄,不管是一个月大还是一天大。
发布于 2015-11-25 08:55:50
请尝试下面的the代码,如果它有效的话:
CREATE TABLE dbo.RegistrationCertificate (IssuedOnORNo DATETIME, CertificationDate DATETIME)
INSERT dbo.RegistrationCertificate (IssuedOnORNo, CertificationDate)
SELECT GETDATE(), DATEADD(MONTH, 13, GETDATE())
UNION ALL
SELECT GETDATE(), GETDATE() + 1
UNION ALL
SELECT GETDATE() - 2, GETDATE()
UNION ALL
SELECT GETDATE(), DATEADD(YEAR, 3, GETDATE())
UNION ALL
SELECT GETDATE(), DATEADD(MONTH, 4, GETDATE())
SELECT t.*
, YEARS = DATEDIFF(YEAR, t.IssuedOnORNo, t.CertificationDate)
, MONTHS = (DATEDIFF(MONTH, t.IssuedOnORNo, t.CertificationDate) - ((DATEDIFF(MONTH, t.IssuedOnORNo, t.CertificationDate) / 12) * 12))
, DAYS = ((DATEDIFF(DAY, t.IssuedOnORNo, t.CertificationDate) - ((DATEDIFF(DAY, t.IssuedOnORNo, t.CertificationDate) / 365) * 365))
- (((DATEDIFF(MONTH, t.IssuedOnORNo, t.CertificationDate) - ((DATEDIFF(MONTH, t.IssuedOnORNo, t.CertificationDate) / 12) * 12))) * 30) - 1)
FROM dbo.RegistrationCertificate t WITH(NOLOCK)顺便说一句,如果您想知道如何在报表中使用这些代码,可以使用上面的代码为报表数据创建一个存储过程。
编辑:
在这种情况下,下面的代码应该是报告代码的足够接近的翻译:
YEARS = DateDiff("YYYY",Fields!IssuedOnORNo.Value, Fields!CertificationDate.Value)
MONTHS = (DateDiff("m", Fields!IssuedOnORNo.Value, Fields!CertificationDate.Value)
- ((DateDiff("m", Fields!IssuedOnORNo.Value, Fields!CertificationDate.Value) / 12) * 12))
DAYS = ((DateDiff("dd", Fields!IssuedOnORNo.Value, Fields!CertificationDate.Value) - ((DateDiff("dd", Fields!IssuedOnORNo.Value, Fields!CertificationDate.Value) / 365) * 365))
- (((DateDiff("m", Fields!IssuedOnORNo.Value, Fields!CertificationDate.Value) - ((DateDiff("m", Fields!IssuedOnORNo.Value, Fields!CertificationDate.Value) / 12) * 12))) * 30) - 1)https://stackoverflow.com/questions/33910703
复制相似问题