SQL 从字符串到日期时间的服务器日期比较

SQL Server Date Comparison from string to 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 日期格式。

检查这个:

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


set dateformat ymd

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

由于您在 SQL 服务器 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)。