我正在使用 SQL Server 2016 数据库,并且在我的存储过程中我想比较两个日期。
我得到一个日期参数作为“dd-MM-yyyy”格式的字符串。
@stringdate = '28-12-1990' // I get date in this format
我想将其转换为日期格式并与类型为 的数据库列进行比较datetime
。
我正在使用 SQL Server 2016 数据库,并且在我的存储过程中我想比较两个日期。
我得到一个日期参数作为“dd-MM-yyyy”格式的字符串。
@stringdate = '28-12-1990' // I get date in this format
我想将其转换为日期格式并与类型为 的数据库列进行比较datetime
。
您需要使用CAST()函数转换为日期格式。
试试这个代码:
CAST(dbdatetimecolumnname AS date) = (CAST(RIGHT(@stringdate,4) + '-' + LEFT(RIGHT(@stringdate,7),2) + '-' + LEFT(@stringdate,2) AS DATE))
Right()和Left()函数用于将字符串日期格式重新排列为 db 日期格式。
由于您使用的是 SQL Server 2016,因此您可以使用该PARSE
函数并定义成功解析此字符串所需的文化。
就像是
DECLARE @stringdate VARCHAR(20) = '28-12-1990';
DECLARE @parseddate DATETIME2(3);
SELECT @parseddate = PARSE(@stringdate AS DATE USING 'de');
SELECT @parseddate
我使用了de
德国的文化 - 因为您拥有的日期格式是欧洲格式 ( dd-MM-yyyy
)。
检查这个:
set dateformat dmy
declare @d datetime='31-01-2016'
select @d
go
set dateformat ymd
declare @d datetime='31-01-2016'
select @d
go