2

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

此语句需要同时在 SQL Server 2k5SQL Compact Edition 3.5 上工作 - 因此答案需要基于“设置”并且不包括 SQLCE 不支持的游标等。

4

5 回答 5

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 )
于 2009-02-24T00:43:42.353 回答
1

不完全是您想要的,但您应该能够轻松更改:

DECLARE @ddate datetime

set @ddate = getdate()

SELECT CAST(DATEPART(month, @ddate) as varchar(2))  + '/' + CAST(DATEPART(year, @ddate) as varchar(4))
于 2009-02-23T23:47:14.767 回答
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”。

于 2009-02-23T23:52:30.557 回答
0

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

于 2009-02-23T23:44:10.733 回答
0

http://msdn.microsoft.com/en-us/library/ms187928.aspx

转换为类型 3 并修剪最后三个字符。

于 2009-02-23T23:48:30.987 回答