如何将19 Dec 2012
转换为getdate()2012-12-22
返回的日期格式。
我需要这个用于日期比较,因为如果我将 2012年12月19日与 2012年11月19日进行比较, 2012年11月19日将证明更长的日期到期字母比较。
修改
我不是这个表的数据库设计者,因为它是工作的,所以给了表。否则就不会使用varchar来存储日期
答案 0 :(得分:6)
<击> 撞击>
<击>尝试,但这会返回一个字符串而不是日期
SELECT convert(varchar, getdate(), 106)
击> <击> 撞击>
在与GETDATE
进行比较之前,您需要先将其转换为日期。
SELECT convert(date, '19 Dec 2012', 106)
您是设计数据库的人吗?如果是,则下次设计时(或如果有时间更改)使用适当的数据类型。
答案 1 :(得分:6)
将两者都转换为日期。不要使用字符串来存储日期值!更好的是,更改数据库架构并完全消除字符串不匹配问题。
另外,请注意Getdate()不返回字符串。它返回datetime数据类型中的日期。 客户端将其转换为字符串表示形式。
有关详细信息,请阅读SQL Server联机丛书中的“强制转换和转换”。
Convert (datetime, stringdate1)
要修复损坏的数据库列,请执行以下操作:
ALTER TABLE YourTable ALTER COLUMN BadStringDate datetime;