2009-02-23 36 views
2

我正在移动一些数据,我需要拿出一个TSQL语句来将日期时间字段中的日期转换为另一个使用varchar MM/yy格式的数据库字段。在TSQL中的转换日期

该声明需要同时适用于SQL Server 2k5 SQL精简版3.5 - 因此,答案需要基于“set”设置,不包括SQLCE中不支持的游标等。

回答

2

如果您曾在非美国数据库服务器上运行,依赖该类型(即“101”)可能会非常危险,因为mm和dd会被切换。可能与使用“3”类型相同。只要你知道服务器的语言总是相同的,那么这些方法是最简单的。

使用日期部分可能是更可靠的,但是如果你想要说的03/08,而不是3/08,你必须确保在一个月一个“0”字头,所以

select 
    right('00' + convert(varchar(2), datepart(mm, @ddate)), 2) + '/' + 
    right(convert(varchar(4), datepart(yy, @ddate)), 2) 
+0

这是为我们的情况提供最佳答案 - 因为服务器语言环境可能有所不同事后看来,我应该在问题中包括这一点。感谢大家的时间和回应。 – gleng 2009-02-24 01:00:34

0

查看DATEPART()函数的联机丛书文档。

1

不正是你想要的,但你应该能够很容易地改变:

DECLARE @ddate datetime 

set @ddate = getdate() 

SELECT CAST(DATEPART(month, @ddate) as varchar(2)) + '/' + CAST(DATEPART(year, @ddate) as varchar(4)) 
1

如何这样的事情...

select substring(convert(varchar(8),yourdatefield,3),4,5) as newdate 
from yourtable 

因此,例如,

select substring(convert(varchar(8),getdate(),3),4,5) 

给 “02/09”。