我正在移动一些数据,我需要提出一个TSQL语句,将当前日期时间字段中的日期转换为另一个具有varchar MM / yy格式的数据库字段。
此语句需要同时适用于SQL Server 2k5 以及 SQL Compact Edition 3.5 - 因此答案需要基于“设置”,不包括SQLCE中不支持的游标等。< / p>
答案 0 :(得分:2)
依赖于该类型,即如果您在非美国数据库服务器上运行,则“101”可能是危险的,因为mm和dd将被切换。使用类型“3”可能相同。只要你知道服务器的语言总是一样的,那些方法就是最简单的。
使用datepart可能更可靠,但如果你想说03/08而不是3/08,你必须确保在月份前加上“0”,所以
select
right( '00' + convert(varchar(2), datepart( mm, @ddate)), 2) + '/' +
right( convert(varchar(4), datepart( yy, @ddate) ), 2 )
答案 1 :(得分:1)
不完全是你想要的,但你应该能够轻松改变:
DECLARE @ddate datetime
set @ddate = getdate()
SELECT CAST(DATEPART(month, @ddate) as varchar(2)) + '/' + CAST(DATEPART(year, @ddate) as varchar(4))
答案 2 :(得分: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”。
答案 3 :(得分:0)
查看DATEPART()函数的联机丛书文档。
答案 4 :(得分:0)
http://msdn.microsoft.com/en-us/library/ms187928.aspx
转换为类型3并修剪最后三个字符。