【问题标题】:Sql Server Datetime2: Eliminate the seconds part in datetime2Sql Server Datetime2:消除datetime2中的秒部分
【发布时间】:2013-09-30 08:07:14
【问题描述】:

如何消除查询中的秒数部分。我使用 DateADD 将秒部分显示为 0 但我只想忽略它。我只想显示日期小时:分钟 我已经使用了这个查询,它返回给我类似的东西

SELECT DATEADD(minute, DATEDIFF(minute,0,GETDATE()), 0)

2013-09-30 13:03:00.000

但我只想要2013-09-30 13:03 部分。

谁能帮帮我?

【问题讨论】:

    标签: sql datetime2


    【解决方案1】:

    如果您正在处理一种格式,那么您最终需要的是一个 字符串,而不是 datetime 值 - datetimes(或 datetime2s)不要't 格式。

    所以你需要转换成字符串。没有与您要求的完全匹配的 format,但如果您进行转换并且没有给 CONVERT 足够的空间,它会截断结果:

    SELECT CONVERT(varchar(16),GETDATE(),120)
    

    【讨论】:

    • 感谢您的回复。我的查询运行完美,但实际上我使用日期时间格式插入它,我只需要以没有字符串的格式显示,所以它在代码中给了我异常..
    • 为此我必须更改getter setter,这样会产生问题。任何方法都可以将获得的日期转换回日期时间??
    • @NosheenJaved - 当您有 datetime(在 SQL 或例如 C# 中)时,正如我所说,它们没有 格式。它们只是有一些内部表示(通常是纯数字)——因为这些类型是固定的和预定义的——没有办法将类型修改为datetime-but-in-this-instance-please-ignore-the-seconds。您需要学会将格式问题与数据存储问题分开。
    • 其实我的意思是我已经做了所有的事情,现在客户的要求发生了变化。我已将 getter setter 的类型设置为 datetime,因此当我运行此查询时,它现在给了我异常。所以我很抱歉有什么方法可以将获得的 varchar 再次转换为 datetime,这样我就不必更改 getters/setters 数据类型了?因为改变他们的类型会给我带来很大的问题
    • @NosheenJaved - 您可以改回您在问题中显示的查询。正如我试图告诉你的那样,没有 没有 秒的日期时间数据类型。因此,如果您的要求是“存储在datetime”和“不显示秒”,那么您的要求是相互矛盾的——您不能同时做到这两点。
    【解决方案2】:

    您不能保留 datetime2 格式并截断其中的一部分。
    您可以尝试以下方法之一:

    SELECT CAST(GETDATE() as date)
    SELECT CONVERT(varchar(16),GETDATE(),120)
    

    如果这仍然不能完全满足您的需求,您可以在this post 中看到许多其他可能的转换。

    【讨论】:

      猜你喜欢
      • 2015-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-22
      • 1970-01-01
      • 2020-04-09
      • 1970-01-01
      相关资源
      最近更新 更多