【发布时间】:2009-02-23 23:39:31
【问题描述】:
我正在移动一些数据,我需要使用 TSQL 语句将当前日期时间字段中的日期转换为另一个具有 varchar MM/yy 格式的数据库字段。
此语句需要在 SQL Server 2k5 和 SQL Compact Edition 3.5 上工作 - 所以答案需要基于“设置”并且不包括 SQLCE 不支持的游标等。
【问题讨论】:
标签: sql tsql sql-server-ce
我正在移动一些数据,我需要使用 TSQL 语句将当前日期时间字段中的日期转换为另一个具有 varchar MM/yy 格式的数据库字段。
此语句需要在 SQL Server 2k5 和 SQL Compact Edition 3.5 上工作 - 所以答案需要基于“设置”并且不包括 SQLCE 不支持的游标等。
【问题讨论】:
标签: sql tsql sql-server-ce
如果您曾经在非美国数据库服务器上运行,则依赖于类型(即“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 )
【讨论】:
不完全是您想要的,但您应该能够轻松更改:
DECLARE @ddate datetime
set @ddate = getdate()
SELECT CAST(DATEPART(month, @ddate) as varchar(2)) + '/' + CAST(DATEPART(year, @ddate) as varchar(4))
【讨论】:
这样的事情怎么样...
select substring(convert(varchar(8),yourdatefield,3),4,5) as newdate
from yourtable
例如,
select substring(convert(varchar(8),getdate(),3),4,5)
给出“02/09”。
【讨论】:
查看 DATEPART() 函数的联机丛书文档。
【讨论】:
http://msdn.microsoft.com/en-us/library/ms187928.aspx
转换为 type 3 并修剪最后三个字符。
【讨论】: