在SQL中转换日期

时间:2009-02-23 23:39:32

标签: sql tsql sql-server-ce

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

此语句需要同时适用于SQL Server 2k5 以及 SQL Compact Edition 3.5 - 因此答案需要基于“设置”,不包括SQLCE中不支持的游标等。< / p>

5 个答案:

答案 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并修剪最后三个字符。