Sql 服务器 select 没有秒的日期时间

Sql Server select datetime without seconds

我的日期时间列值低于

2015-01-04 20:37:00.000

下面我试过了

cast(cast(MyDateColumn as date) as datetime)+cast(datepart(hour,MyDateColumn ) as float)/24
as MyDateColumn 

CAST(CONVERT(CHAR(16),MyDateColumn,113) AS datetime) as MyDateColumn

这些对我不起作用

我怎样才能将日期时间设置为 01-04.2015 20:37

在MYSQL它会起作用

SELECT DATE_FORMAT(date, '%Y-%m-%d %H:%i') AS formated_date FROM table;

在 MS 中 SQL 它会起作用

 SELECT FORMAT(getdate(), 'dd-mm-yyyy HH:mm') 

在 SQL 服务器中,这应该可以解决问题:

declare @dt datetime = '2015-01-04 20:37:00.000'

select right('0' + cast(DATEPART(MM, @dt) as varchar), 2) + '-' 
        + right('0' +cast(DATEPART(DAY, @dt) as varchar), 2) + '.'
        + cast(DATEPART(YEAR, @dt) as varchar) + ' '
        + right('0' +cast(DATEPART(HOUR, @dt) as varchar), 2) + ':'
        + right('0' +cast(DATEPART(MINUTE, @dt) as varchar), 2)

在 SQL 服务器中,这将起作用:

DECLARE @now [datetime]; 
SET @now = GETDATE();
SELECT
    CONVERT([varchar](10), @now, 105) + ' ' + 
    RIGHT('0' + CONVERT([varchar](2), DATEPART(HOUR, @now)), 2) + ':' +
    RIGHT('0' + CONVERT([varchar](2), DATEPART(MINUTE, @now)), 2);

自 MS SQL 2012 年起,您可以使用 FORMAT

SELECT FORMAT([MyDateColumn], 'dd-MM.yyyy HH:mm') 

这是另一种方法,您可以在 return 中获得日期时间。

SELECT DATEADD(
  MILLISECOND,
  DATEPART(MILLISECOND, '2016-02-16 13:45:24.573') * -1,
  DATEADD(SECOND, DATEPART(SECOND,'2016-02-16 13:45:24.573') * -1,
  '2016-02-16 13:45:24.573')
)

我就是这样做的。我需要 -2 分钟

select CONVERT(datetime, CONVERT(CHAR(18),  DATEADD(minute, -2, getdate()) , 113) + '00')
Format(Cast(Convert(varchar(15),Cast(timeval as Time),100) as DateTime),'hh:mm tt') As newtime   

这将从时间中删除秒数并添加 AM、PM 时间。

简单地说,

SELECT CAST(CONVERT(varchar, GETDATE(), 100) as datetime)