格式化当前时间到yyyy-MM-dd 00:00:00

时间:2014-04-10 20:49:26

标签: sql-server

通过使用以下查询,我获得当前日期的第一天

  SELECT  DATEADD(dd,-(DAY(getdate())-1),getdate())

结果:2014-04-01 15:41:06.257

我需要在00:00:00格式更改小时,减号,秒,我想要类似

2014-04-01 00:00:00

由于

2 个答案:

答案 0 :(得分:4)

这也将实现:

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

答案 1 :(得分:1)

您的查询返回datetime值 - 自SQL Server时钟纪元 1900年1月1日00:00:00.000以来的毫秒数。

datetime值只包含您提供的文本表示形式(如果您没有明确指定它,您将获得为SQL Server配置的默认值。)

您可以执行以下任何操作:

  • 将其转换为date值(假设SQL Server的最新版本):

    select convert(date,
             dateadd(day,
               1-day(current_timestamp) ,
               current_timestamp
               )
             )
    
  • 您可以通过执行一些日期/时间算法来剥离时间组件:

    select dateadd(day,
             datediff(day,
               '', -- 1 Jan 1900 00:00:00.000
               current_timestamp
               ) - day(current_timestamp) + 1,
               '', -- 1 Jan 1900 00:00:00.000
             )
    
  • 由于datetime值是一对32位有符号整数,因此您可以操纵其内部表示来查看时间组件:

    select convert(datetime,
             substring(
               convert(varbinary(8),current_timestamp),
               1,
               4
               ) + 0x00000000
             )
    

如果你真正想要的是显示日期的文字表示,你可以简单地转换为所需的形式:

select convert(char(10),
         dateadd(day,
           1-day(current_timestamp) ,
           current_timestamp
           ),
         120
         )