T-SQL日期格式

Mud*_*san 1 sql t-sql sql-server

如何转换19 Dec 2012为getdate()返回的日期格式2012-12-22.我因为如果我比较需要这个日期比较2012年12月19日2012年11月19,2012年11月19会变成更大的日期,由于按字母顺序排列的比较.

编辑

我不是这个表的数据库设计者,因为它是工作的给定表.否则将不会使用varchar存储日期

Joh*_*Woo 6

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

SELECT convert(varchar, getdate(), 106)
Run Code Online (Sandbox Code Playgroud)

在比较之前,你需要先将它转换为日期GETDATE.

SELECT convert(date, '19 Dec 2012', 106)
Run Code Online (Sandbox Code Playgroud)

你是那个设计数据库的人吗?如果是,则下次设计时(或者如果有时间更改)使用适当的数据类型.


Eri*_*ikE 6

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

另请注意,Getdate()不返回字符串.它返回datetime数据类型中的日期.该客户端转换,为字符串表示.

有关更多信息,请阅读SQL Server联机丛书中的"强制转换".

Convert (datetime, stringdate1)
Run Code Online (Sandbox Code Playgroud)

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

ALTER TABLE YourTable ALTER COLUMN BadStringDate datetime;
Run Code Online (Sandbox Code Playgroud)