如何转换19 Dec 2012
为 getdate() 返回的日期格式2012-12-22
。我需要这个用于日期比较,因为如果我将19 Dec 2012与19 Nov 2012进行比较,由于字母比较,2012 年 11 月19 日将变成更大的日期。
编辑
我不是这个表的数据库设计者,被给定的表是要工作的。否则不会使用 varchar 来存储日期
如何转换19 Dec 2012
为 getdate() 返回的日期格式2012-12-22
。我需要这个用于日期比较,因为如果我将19 Dec 2012与19 Nov 2012进行比较,由于字母比较,2012 年 11 月19 日将变成更大的日期。
编辑
我不是这个表的数据库设计者,被给定的表是要工作的。否则不会使用 varchar 来存储日期
试试看,但这会返回一个字符串而不是日期
SELECT convert(varchar, getdate(), 106)
您需要先将其转换为日期,然后再与GETDATE
.
SELECT convert(date, '19 Dec 2012', 106)
你是设计数据库的人吗?如果是,那么在您下次设计时(或者如果您有时间进行更改),请使用适当的数据类型。
将两者都转换为日期。不要使用字符串来存储日期值!更好的是,更改您的数据库架构,字符串不匹配问题就完全消失了。
另外,请注意 Getdate() 不返回字符串。它返回 datetime 数据类型的日期。客户端将其转换为字符串表示形式。
有关详细信息,请阅读 SQL Server 联机丛书中的“cast and convert”。
Convert (datetime, stringdate1)
要修复损坏的数据库列,请执行以下操作:
ALTER TABLE YourTable ALTER COLUMN BadStringDate datetime;