2

我正在使用 SQL Server 2016 数据库,并且在我的存储过程中我想比较两个日期。

我得到一个日期参数作为“dd-MM-yyyy”格式的字符串。

@stringdate = '28-12-1990'   // I get date in this format

我想将其转换为日期格式并与类型为 的数据库列进行比较datetime

4

3 回答 3

3

您需要使用CAST()函数转换为日期格式。

试试这个代码:

CAST(dbdatetimecolumnname AS date) = (CAST(RIGHT(@stringdate,4) + '-' + LEFT(RIGHT(@stringdate,7),2) + '-' + LEFT(@stringdate,2) AS DATE))

Right()Left()函数用于将字符串日期格式重新排列为 db 日期格式。

于 2016-01-09T09:20:15.433 回答
3

由于您使用的是 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)。

于 2016-01-09T09:29:48.843 回答
1

检查这个:

set dateformat dmy
declare @d datetime='31-01-2016'
select @d
go


set dateformat ymd

declare @d datetime='31-01-2016'
select @d
go
于 2016-01-09T09:25:24.883 回答