【问题标题】:Convert date in TSQL在 SQL 中转换日期
【发布时间】:2009-02-23 23:39:31
【问题描述】:

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

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

【问题讨论】:

    标签: sql tsql sql-server-ce


    【解决方案1】:

    如果您曾经在非美国数据库服务器上运行,则依赖于类型(即“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 )
    

    【讨论】:

    • 这是适合我们情况的最佳答案 - 因为服务器区域设置可能会有所不同。事后看来,我应该将其包含在问题中。感谢大家的时间和回复。
    • 是的,你是对的。切 101 到 5 会给你 MM/dd 而不是 MM/yy
    【解决方案2】:

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

    DECLARE @ddate datetime
    
    set @ddate = getdate()
    
    SELECT CAST(DATEPART(month, @ddate) as varchar(2))  + '/' + CAST(DATEPART(year, @ddate) as varchar(4))
    

    【讨论】:

      【解决方案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”。

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2020-10-03
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-05-18
            • 2016-04-03
            • 1970-01-01
            相关资源
            最近更新 更多