1

如何转换19 Dec 2012为 getdate() 返回的日期格式2012-12-22。我需要这个用于日期比较,因为如果我将19 Dec 201219 Nov 2012进行比较,由于字母比较,2012 年 11 月19 日将变成更大的日期。

编辑

我不是这个表的数据库设计者,被给定的表是要工作的。否则不会使用 varchar 来存储日期

4

2 回答 2

6

试试看,但这会返回一个字符串而不是日期

SELECT convert(varchar, getdate(), 106)

您需要先将其转换为日期,然后再与GETDATE.

SELECT convert(date, '19 Dec 2012', 106)

你是设计数据库的人吗?如果是,那么在您下次设计时(或者如果您有时间进行更改),请使用适当的数据类型。

于 2012-12-22T08:03:38.863 回答
6

将两者都转换为日期。不要使用字符串来存储日期值!更好的是,更改您的数据库架构,字符串不匹配问题就完全消失了。

另外,请注意 Getdate() 不返回字符串。它返回 datetime 数据类型的日期。客户端将其转换为字符串表示形式。

有关详细信息,请阅读 SQL Server 联机丛书中的“cast and convert”。

Convert (datetime, stringdate1)

要修复损坏的数据库列,请执行以下操作:

ALTER TABLE YourTable ALTER COLUMN BadStringDate datetime;
于 2012-12-22T08:11:22.217 回答