在sql server中转换日期时间

发布于 2024-09-29 01:42:06 字数 159 浏览 8 评论 0原文

如何将

2010-10-25 11:13:36.700

以下的日期时间格式转换为

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

How can i convert the datetime format below

2010-10-25 11:13:36.700

into

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

來不及說愛妳 2024-10-06 01:42:06

要获取“25-Oct-2010”,

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

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

请参阅 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)

参考:

测试

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 函数。

To get "25-Oct-2010"

Assuming the value is supplied as a string, not a DATETIME data type:

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

See the CAST/CONVERT documentation for other formats, though the one you requested requires post-processing.

To get "2010-10-25 00:00:00.000"

The best performing means is to use DATEADD & DATEDIFF:

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

References:

Testing

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

Returns:

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

Addendum

Being that you're on SQL Server 2005, you could make date formatting easier for yourself by creating a SQLCLR function that would allow you to use the .NET date formatting.

勿忘初心 2024-10-06 01:42:06

检查这个,

SELECT convert(VARCHAR, getdate(),106)

这将为您提供 25 Oct 2010

并且

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

这将为您提供 25-Oct-2010

check this one

SELECT convert(VARCHAR, getdate(),106)

this will give you 25 Oct 2010

AND

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

this will give you 25-Oct-2010

冰火雁神 2024-10-06 01:42:06

检查这是否可以帮助您:

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

您可以在此处获取更多信息

PD。有时 Stackoverflow 会让人太上瘾,你可能想先尝试一下 google

Check if this can help you:

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

You can get more info Here

PD. Stackoverflow can be too addicted sometimes, you might wanna try google before

丶情人眼里出诗心の 2024-10-06 01:42:06

选择转换(NVARCHAR(20),getDATE(),105)

select CONVERT(NVARCHAR(20),getDATE(),105)

忆梦 2024-10-06 01:42:06

请尝试

    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

Please try

    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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文