通过扭曲将varchar转换为日期格式

时间:2013-09-11 09:20:54

标签: sql sql-server type-conversion

我有一个日期时间格式的数据列。日期显示如下:

 2013-09-07 00:00:00.000; 
 2012-12-09 00:00:00.000; 
 2013-08-19 00:00:00.000;

我希望日期如此

 26-JUN-13; 
 08-FEB-12; 
 28-NOV-12;

我使用了以下查询:

select  [003 AccptReg].[dbo].[SysDB].[statCngDate_sys] from [003 AccptReg].[dbo].[SysDB] 
        where [statCngDate_sys]= convert(datetime,left([statCngDate_sys],10),103)

但它显示以下错误:

  

导致将varchar数据类型转换为日期时间数据类型   在超出范围的价值。

我做错了什么?

我是否还必须以datetime格式而不是varchar格式保留日期列以搜索一系列日期?

3 个答案:

答案 0 :(得分:1)

尝试这个

SELECT CONVERT(varchar(50),(CONVERT(DATETIME,'2013-09-07 00:00:00.000')),106)

您不需要转换为日期时间,因为您的列必须采用相同的格式

答案 1 :(得分:0)

使用此查询:

SELECT UPPER(REPLACE(CONVERT(CHAR(9), GETDATE(), 6), ' ', '-'))

这可以解决您的问题。

答案 2 :(得分:0)

试试这个

SELECT CONVERT(VARCHAR(10),GETDATE(),111)