【问题标题】:Need part of a date需要约会的一部分
【发布时间】:2016-10-30 16:24:24
【问题描述】:

我正在使用 SQL Server 2008R2。 我试图在输出中获取日期的一部分,而我的列是datetime 数据类型。 例如, 如果当前日期和时间是2016-06-28 17:34:12.060,那么我需要输出为17:00 只需要:00 分钟的小时。

到目前为止我已经尝试过了,

Select DateName(HH,SUBSTRING('2016-06-28 17:34:12.060',12,5)) +':00'

这给了我正确的输出。但是当我传递 datetime 数据类型的列名时,它会给出错误,

Select DateName(HH,SUBSTRING(TimeInHour,12,5)) +':00'

给出错误,

子字符串函数的参数1的参数数据类型时间无效。

我知道我在错误的地方使用了SUBSTRING(),但我真的不知道如何实现该输出。 帮助将非常明显。我需要输出为 HH:00,Hour 不会是 00 分钟。

【问题讨论】:

  • 是的,可能但不完全是
  • 有几个选项。您可以将cast 从一种数据类型转换为另一种数据类型。或者您可以确定 SQL Server 的date and time functions
  • ...或者您可以使用 SQL Server 的数据和时间函数...
  • 谢谢,但现在它为我工作@destination-data

标签: sql sql-server sql-server-2008 sql-server-2008-r2


【解决方案1】:

你为什么要使用substring()datename() 的第二个参数应该是日期/时间数据类型。所以,就这样吧:

Select DateName(hour, '2016-06-28 17:34:12.060') + ':00'

【讨论】:

  • 当我输入“2016-06-28 17:34:12.060”时它对我来说很好,但它不是确切的日期。我有一个列名 TimeInHour,其中包含我拥有的日期列表得到结果。该列是日期时间数据类型
【解决方案2】:

试试这个:

Select CAST(DATEPART(hour,'2016-06-28 17:34:12.060') AS VARCHAR(2)) +':00'

【讨论】:

    【解决方案3】:

    下面是可能有用的代码

    SELECT CONVERT(VARCHAR(50),DATEPART(YY,'2016-06-28 17:34:12.060')) -- Year
    SELECT CONVERT(VARCHAR(50),DATEPART(mm,'2016-06-28 17:34:12.060')) -- Month
    SELECT CONVERT(VARCHAR(50),DATEPART(d,'2016-06-28 17:34:12.060'))  -- Day   
    SELECT CONVERT(VARCHAR(50),DATEPART(HH,'2016-06-28 17:34:12.060'))+':00' -- Hour
    SELECT CONVERT(VARCHAR(50),DATEPART(mi,'2016-06-28 17:34:12.060'))+':00' -- Minutes
    SELECT CONVERT(VARCHAR(50),DATEPART(ss,'2016-06-28 17:34:12.060')) -- Seconds
    SELECT CONVERT(VARCHAR(50),DATEPART(ms,'2016-06-28 17:34:12.060')) -- Millisecond
    

    【讨论】:

      【解决方案4】:
      select convert(varchar, datepart(hour, getdate())) + ':' + convert(varchar, datepart(second, getdate()))
      

      【讨论】:

        【解决方案5】:

        你需要先转换你的DATETIME类型列,使用CAST函数

        Select DateName(HH,SUBSTRING(CAST(ColumnName AS VARCHAR(30)),12,5)) +':00'
        

        或替代方法是使用 LEFTCONVERT

        SELECT LEFT(CONVERT(VARCHAR, ColumnName ,108),2)+':00'
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-02-24
          • 2021-06-08
          • 1970-01-01
          • 1970-01-01
          • 2018-07-04
          • 1970-01-01
          相关资源
          最近更新 更多