【问题标题】:Convert datetime in sql server在sql server中转换日期时间
【发布时间】:2010-10-25 03:18:48
【问题描述】:

如何转换下面的日期时间格式

2010-10-25 11:13:36.700

进入

25-Oct-2010 或 2010-10-25 00:00:00.000

【问题讨论】:

  • 通过 CONVERT() 函数并不难,但几乎总是更好在应用程序代码而不是 sql 中完成。
  • @Joel Coehoorn:假设这只是为了演示。 GROUP BY 或 ORDER BY.... 可能需要日期操作。
  • 最后一个例子,应该是 2010 -10-25 00:00:00.000 而不是 2009 ...?跨度>

标签: sql sql-server sql-server-2005 tsql date-formatting


【解决方案1】:

获取“2010 年 10 月 25 日”

假设值是作为字符串而不是 DATETIME 数据类型提供的:

SELECT REPLACE(CONVERT(VARCHAR, CAST('2010-10-25 11:13:36.700' AS DATETIME), 106), ' ', '-')

请参阅CAST/CONVERT documentation 了解其他格式,但您要求的格式需要后处理。

获取“2010-10-25 00:00:00.000”

表现最好的方法是使用 DATEADD & DATEDIFF:

SELECT DATEADD(d, DATEDIFF(dd, 0, '2010-10-25 11:13:36.700'), 0)

参考资料:

测试

WITH sample AS (
   SELECT CAST('2010-10-25 11:13:36.700' AS DATETIME) dt)
SELECT REPLACE(CONVERT(VARCHAR, s.dt, 106), ' ', '-') AS col1,
       DATEADD(d, DATEDIFF(dd, 0, s.dt), 0) AS col2
  FROM sample s

返回:

col1          col2
-------------------------------------
25-Oct-2010   2010-10-25 00:00:00.000

附录

由于您使用的是 SQL Server 2005,因此您可以通过创建允许您使用 .NET 日期格式的 SQLCLR 函数来简化日期格式。

【讨论】:

    【解决方案2】:

    检查这个

    SELECT convert(VARCHAR, getdate(),106)
    

    这会给你25 Oct 2010

    与

    SELECT REPLACE(convert(VARCHAR, getdate(),106), ' ' , '-')
    

    这会给你25-Oct-2010

    【讨论】:

      【解决方案3】:

      检查这是否可以帮助您:

      SELECT REPLACE(CONVERT(VARCHAR(11), GETDATE(), 106), ' ', '-') 
      

      您可以获取更多信息Here

      PD。 Stackoverflow 有时可能太上瘾了,你可能想在此之前尝试 google

      【讨论】:

        【解决方案4】:

        选择 CONVERT(NVARCHAR(20),getDATE(),105)

        【讨论】:

          【解决方案5】:

          请尝试

              SELECT CONVERT(varchar, GETDATE(), 1)   --12/30/06
              SELECT CONVERT(varchar, GETDATE(), 2)   --06.12.30
              SELECT CONVERT(varchar, GETDATE(), 3)   --30/12/06
              SELECT CONVERT(varchar, GETDATE(), 4)   --30.12.06
              SELECT CONVERT(varchar, GETDATE(), 5)   --30-12-06
              SELECT CONVERT(varchar, GETDATE(), 6)   --30 Dec 06
              SELECT CONVERT(varchar, GETDATE(), 7)   --Dec 30, 06
              SELECT CONVERT(varchar, GETDATE(), 10)  --12-30-06
              SELECT CONVERT(varchar, GETDATE(), 11)  --06/12/30
              SELECT CONVERT(varchar, GETDATE(), 12)  --061230
              SELECT CONVERT(varchar, GETDATE(), 23)  --2006-12-30
              SELECT CONVERT(varchar, GETDATE(), 101) --12/30/2006
              SELECT CONVERT(varchar, GETDATE(), 102) --2006.12.30
              SELECT CONVERT(varchar, GETDATE(), 103) --30/12/2006
              SELECT CONVERT(varchar, GETDATE(), 104) --30.12.2006
              SELECT CONVERT(varchar, GETDATE(), 105) --30-12-2006
              SELECT CONVERT(varchar, GETDATE(), 106) --30 Dec 2006
              SELECT CONVERT(varchar, GETDATE(), 107) --Dec 30, 2006
              SELECT CONVERT(varchar, GETDATE(), 110) --12-30-2006
              SELECT CONVERT(varchar, GETDATE(), 111) --2006/12/30
              SELECT CONVERT(varchar, GETDATE(), 112) --20061230
          

          【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-06-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-12-03
          • 2013-10-30
          相关资源
          最近更新 更多