【问题标题】:How to assign current date with specific time to column?如何将具有特定时间的当前日期分配给列?
【发布时间】:2012-12-17 15:43:33
【问题描述】:

如何将当前日期指定为特定时间?

假设上午 8:00:00 到数据类型为 datetime 的列 EXIT_DT?

我试过GETDATE() AS EXIT_DT,但它给了我当前的日期时间。我正在使用 Sql server 2005。有什么帮助吗?

假设今天是 2013 年 1 月 3 日,我希望我的结果作为日期时间数据类型返回,其值为 2013 年 1 月 3 日上午 8:00:00。如果我运行 ytd 语句,结果将是 1/2/2013 8:00:00 AM

【问题讨论】:

    标签: sql sql-server sql-server-2005 datetime ssis


    【解决方案1】:

    这个公式总是会在它被调用的那一天产生 08:00,并且避免了字符串操作:

    select DATEADD(day,DATEDIFF(day,'20010101',GETDATE()),'2001-01-01T08:00:00')
    

    尽量避免与字符串相互转换的解决方案 - 将日期时间值视为字符串是最大的错误来源之一。

    它的工作原理是计算自 2001 年 1 月 1 日以来经过的天数(以整数形式)。然后将相同的天数添加到 2001 年 1 月 1 日的 08:00。

    【讨论】:

    • 其他答案也可能有效,但我们真的很简短。聪明!
    • 太棒了!太棒了!
    【解决方案2】:

    你可以试试这个:

    DECLARE  @dt datetime;
    
    SET @dt=CONVERT(DateTime, CONVERT(VARCHAR,GETDATE(),101)+' 8:00:00')
    
    SELECT CONVERT(VARCHAR, @dt, 101)+'  '+ LTRIM(RIGHT(CONVERT(VARCHAR(20),@dt, 100), 7))
    

    访问http://www.sql-server-helper.com/tips/date-formats.aspx 了解datetime 格式。

    【讨论】:

      【解决方案3】:

      使用 Convert 和 getdate() 来获取特定格式。

      例如:

      SELECT CONVERT(VARCHAR(30),GETDATE(),113) 
      

      【讨论】:

      • 我试过这并没有达到我想要的效果。我想要数据类型 datetime 的结果而不是 varchar(30)。有什么进一步的帮助吗?
      • SELECT CONVERT(datetime, CONVERT(VARCHAR(30),GETDATE(),113))
      【解决方案4】:

      这有点愚蠢,但确实有效

      select cast(cast(getdate() as date) as datetime) + '08:00:00'
      

      它将getdate() 转换为date 从而减少了时间,然后将其转换为datetime 并增加了8 小时。

      如果你想避免 varchardatetime 的隐式转换,你可以使用这个版本:

      select cast(cast(getdate() as date) as datetime) 
           + convert(datetime,'08:00:00',114)
      

      【讨论】:

        【解决方案5】:

        这也有效。 (1)。将今天的日期转换为 ISO format (yyyymmdd) (2)。添加时间,(3)。转换回日期时间

        Select convert(datetime, convert(varchar, getdate(),112) + ' ' + '8:00:00AM')
        --Results
        2013-01-03 08:00:00.000
        

        如果您需要特定格式,则需要再次转换回 varchar。

        【讨论】:

          【解决方案6】:
          -- AM/PM --
          SELECT TO_CHAR(sysdate, 'MM/DD/YYYY HH:MI:SS AM') FROM dual
          /
          
          -- 24 hrs format --
          SELECT TO_CHAR(sysdate, 'MM/DD/YYYY HH24:MI:SS') FROM dual
          /
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2021-07-02
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多