我正在移动一些数据,我需要拿出一个TSQL语句来将日期时间字段中的日期转换为另一个使用varchar MM/yy格式的数据库字段。在TSQL中的转换日期
该声明需要同时适用于SQL Server 2k5 和 SQL精简版3.5 - 因此,答案需要基于“set”设置,不包括SQLCE中不支持的游标等。
我正在移动一些数据,我需要拿出一个TSQL语句来将日期时间字段中的日期转换为另一个使用varchar MM/yy格式的数据库字段。在TSQL中的转换日期
该声明需要同时适用于SQL Server 2k5 和 SQL精简版3.5 - 因此,答案需要基于“set”设置,不包括SQLCE中不支持的游标等。
如果您曾在非美国数据库服务器上运行,依赖该类型(即“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)
查看DATEPART()函数的联机丛书文档。
不正是你想要的,但你应该能够很容易地改变:
DECLARE @ddate datetime
set @ddate = getdate()
SELECT CAST(DATEPART(month, @ddate) as varchar(2)) + '/' + CAST(DATEPART(year, @ddate) as varchar(4))
http://msdn.microsoft.com/en-us/library/ms187928.aspx
转换为3型和修剪最后三个字符。
如何这样的事情...
select substring(convert(varchar(8),yourdatefield,3),4,5) as newdate
from yourtable
因此,例如,
select substring(convert(varchar(8),getdate(),3),4,5)
给 “02/09”。
这是为我们的情况提供最佳答案 - 因为服务器语言环境可能有所不同事后看来,我应该在问题中包括这一点。感谢大家的时间和回应。 – gleng 2009-02-24 01:00:34