0

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

 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 格式才能搜索日期范围?

4

3 回答 3

1

试试这个

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

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

于 2013-09-11T09:28:56.867 回答
0

使用此查询:

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

这应该可以解决您的问题。

于 2013-09-11T09:58:52.423 回答
0

试试这个

SELECT CONVERT(VARCHAR(10),GETDATE(),111)
于 2013-09-11T10:03:07.717 回答