【问题标题】:How to only keep the time portion of a datetime value (SQL Server)?如何只保留日期时间值的时间部分(SQL Server)?
【发布时间】:2016-10-22 15:16:12
【问题描述】:

这是我用来获取HH:MM 字符串的方法:

CONVERT(varchar(5), time_requested, 108)

我认为可能有更优雅的方式,甚至可能更有效(请参阅How to remove the time portion of a datetime value (SQL Server)? 上的类似问题)。

要求:

  • 最终结果必须能够轻松转换为字符串(以便能够将某些字段time_createddate_created 等字段连接起来)。
  • 必须涵盖以下 2 种情况:HH:MMHH:MM:SS

【问题讨论】:

  • CONVERT(varchar(5), time_requested, 108) 我认为根据您的第一个要求,这是最优雅的解决方案。你使用的是哪个版本的SQL SERVER
  • 使用 2008 和 2012...

标签: sql-server datetime date-conversion


【解决方案1】:
Declare @D datetime = GetDate()      -- Data Type could be Time as well

Select CONVERT(varchar(8), @D, 108)  -- for HH:MM:SS  11:27:26
Select CONVERT(varchar(5), @D, 108)  -- for HH:MM     11:27

没有提到,如果 2012+ 你也可以使用 Format()

Declare @D DateTime = '2016-10-22 13:30:25'

Select Format(@D,'HH:mm')         -- 13:30
Select Format(@D,'hh:mm:ss tt')   -- 01:30:25 PM

【讨论】:

  • 不知道格式。谢谢!
  • @user3341592 这是一个很棒的功能,有很多选项,但是,在大型数据集上的性能很糟糕
【解决方案2】:

你的方法很好。它产生值的字符串表示形式。

您还可以转换为time 数据类型:

select cast(time_requested as time)

但请注意,这是“无格式”——它包含小时、分钟、秒和秒的小数部分。所以,你的方法可能是更好的方法。

【讨论】:

    猜你喜欢
    • 2010-09-05
    • 1970-01-01
    • 1970-01-01
    • 2013-04-17
    相关资源
    最近更新 更多