【问题标题】:sql - beginning of hour, month etcsql - 小时、月份等的开始
【发布时间】:2009-09-17 14:34:47
【问题描述】:

我知道如何在 SQL (SQL Server) 中获取当前日期,但是是当天的开始:

select dateadd(DAY, datediff(day, 0, getdate()),0) 
(result:2009-09-17 00:00:00.000)

我需要获取(在 SQL 中)从这一小时开始的当前日期。 例如:2009-09-17 17:00:00(具体格式我不关心)

我需要 获取当前日期,但在本月初: 例如:2009-09-01 00:00:00.000(具体格式我不关心)

你能帮帮我吗?提前致谢

【问题讨论】:

    标签: sql sql-server sql-server-2005 tsql


    【解决方案1】:

    只需调整您当前的一天开始代码!

    你想要的只是月的开始,小时的开始。还是一样的……

    select dateadd(month, datediff(month, 0, getdate()),0) 
    
    select dateadd(hour, datediff(hour, 0, getdate()),0)
    

    【讨论】:

      【解决方案2】:

      试试这个:

      CAST(CAST(SYSDATETIME() AS DATE) AS DATETIME)
      

      【讨论】:

        【解决方案3】:

        最短的是:CAST(CURRENT_TIMESTAMP AS DATE)

        【讨论】:

          【解决方案4】:

          试试这个

          select DATEADD(hh,17,dateadd(DAY, datediff(day, 0, getdate()),0))
          
          SELECT CAST('01 ' + CAST(DATENAME(MM, getdate()) AS VARCHAR(15)) + CAST(DATEPART(yyyy, GETDATE()) AS VARCHAR(5)) AS DATETIME)
          

          【讨论】:

          • 第一:谢谢。第二:您现在明确输入时间(第一个查询中为 17,第二个查询中为 01)。我不想输入这个数字,我需要当前的时间。当前月份。
          • 将 17 更改为 DATEPART(hh, GETDATE()) 以获取当前时间,而 01 表示月初,我误解了吗?
          【解决方案5】:

          或者你可以试试这个

          当天:select CONVERT( datetime, convert( varchar(8), getdate(), 112))

          月份:select CONVERT( datetime, convert( varchar(6), getdate(), 112)+ '01')

          年份:select CONVERT( datetime, convert( varchar(4), getdate(), 112)+ '0101')

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-08-18
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多