在sql server中转换datetime

Fir*_*and 3 sql t-sql sql-server sql-server-2005 date-formatting

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

2010-10-25 11:13:36.700

2010年10月25日2010-10-25 00:00:00.000

OMG*_*ies 5

获得"2010年10月25日"

假设该值以字符串形式提供,而不是DATETIME数据类型:

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

有关其他格式的信息,请参阅CAST/CONVERT文档,但您请求的格式需要进行后处理.

获得"2010-10-25 00:00:00.000"

性能最佳的方法是使用DATEADD和DATEDIFF:

SELECT DATEADD(d, DATEDIFF(dd, 0, '2010-10-25 11:13:36.700'), 0)
Run Code Online (Sandbox Code Playgroud)

参考文献:

测试

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
Run Code Online (Sandbox Code Playgroud)

返回:

col1          col2
-------------------------------------
25-Oct-2010   2010-10-25 00:00:00.000
Run Code Online (Sandbox Code Playgroud)

附录

由于您使用的是SQL Server 2005,因此可以通过创建允许您使用.NET日期格式的SQLCLR函数来更轻松地为自己设置日期格式.