【发布时间】:2017-06-16 04:44:00
【问题描述】:
我正在尝试使用 sql 查询从定义 3 个不同文本框中的值中获取 DOB
1) 第一个文本框包含年份,例如: 30
2)第二个文本框包含月份,例如: 03
3)第三个文本框包含天,例如: 30
所以我想要上述值的日期。 我的工作如下:
declare @Year int = 31,
@month int = 4,
@day int = 0
Declare @TempDate Datetime,@TempDayPart int,@TempYearPart int,@TempMonthPart int,@FinalDate datetime,@checkLeapYear int,@chkChkDay int
SET @TempDate =DATEADD(YEAR, -@Year,CONVERT(date, GETDATE(),103))
select @TempDate as yearcount
SET @TempDate = DATEADD(MONTH, -@month , @TempDate)
select @TempDate as monthcount
SET @TempDate = DATEADD(DAY, -@day, @TempDate)
select @TempDate as FinalDate
此功能在大多数情况下都可以正常工作,但对于 feb 月份不正确,因为它的 dob DAY 大于今天的 DAY
注意:检查请使用此链接http://www.calculator.net/age-calculator.html
1) 问题日期:17-02-1986[或使用从今天开始的 2 月的任何更大日期,例如今天是 16 日,因此您可以在 17 日到 28 日或 29 日进行 FEB 计算]
【问题讨论】:
-
那是非标准的 SQL。您使用的是哪个 DBMS?
-
在 MS SQL 服务器中你可以使用DATEFROMPARTS。 DATEFROMPARTS(年、月、日)它适用于 MSSQ 2012 及更高版本。
标签: sql stored-procedures date