在SQL中截断秒和毫秒

Ult*_*tic 8 sql sql-server datetime date

我在截断数据方面遇到了一些麻烦.我正在使用SQL的GETDATE()函数来获取当前日期和时间并将它们输入到数据库中.但是,我只想将日期和时间保存到分钟.换句话说,我想在输入新数据时保存dd/mm/yyyy hh:mm:00.000或dd/mm/yyyy hh:mm.我该怎么做呢?

我应该注意到我正在使用MS-SQL.

Lás*_*ler 13

有很多方法可以做到这一点.

例如,您可以将生成的转换datetime,从GetDate()一个smalldatetime第一,点菜:

CAST(GetDate() AS smalldatetime)
Run Code Online (Sandbox Code Playgroud)

需要明确的是,这会将生成的秒数向上(或向下)舍入到最接近的分钟,具体取决于当前秒的值.

编辑:

或者,您可以让SQL Server截断一个datetime"更清洁"(READ:不舍入,因为该值被预截断)转换为smalldatetime:

CAST(DateAdd(minute, DateDiff(minute, 0, GetDate()), 0) AS smalldatetime)
Run Code Online (Sandbox Code Playgroud)

  • +1指出向上或向下取整 (2认同)

Ano*_*non 5

对于截断:

SELECT SMALLDATETIMEFROMPARTS(
         datepart(year  ,dt)
        ,datepart(month ,dt)
        ,datepart(day   ,dt)
        ,datepart(hour  ,dt)
        ,datepart(minute,dt)
      ) 
FROM (SELECT GETDATE()) t(dt)
Run Code Online (Sandbox Code Playgroud)