Следующее имеет очень быструю производительность, но оно не только удаляет миллисекунды, но и округляет до минуты. Смотри (http://msdn.microsoft.com/en-us/library/bb677243.aspx)
select cast(yourdate as smalldatetime) from yourtable
Edit:
Следующий скрипт сделан для сравнения скриптов от Микаэля и Гбн. Я проголосовал за них обоих, так как оба ответа великолепны Тест покажет, что скрипт gbn 'немного быстрее, чем Mikaels:
declare @a datetime
declare @x int = 1
declare @mikaelend datetime
declare @mikael datetime = getdate()
while @x < 5000000
begin
select @a = dateadd(millisecond, -datepart(millisecond, getdate()), getdate()) , @x +=1
end
set @mikaelend = getdate()
set @x = 1
declare @gbnend datetime
declare @gbn datetime = getdate()
while @x < 5000000
begin
select @a = DATEADD(second, DATEDIFF(second, '20000101', getdate()), '20000101') , @x +=1
end
set @gbnend = getdate()
select datediff(ms, @mikael, @mikaelend) mikael, datediff(ms, @gbn, @gbnend) gbn
Первый запуск
mikael gbn
----------- -----------
5320 4686
Второй запуск
mikael gbn
----------- -----------
5286 4883
Третий прогон
mikael gbn
----------- -----------
5346 4620