2016-08-25 4 views
0

Я пытаюсь вычесть час с этой даты - 2016-08-25 1: 19: 30.560. Я ожидаю и хочу получить 2016-08-25 12: 19: 30.560.Дата выпуска SQL Server DATEADD проблема

Вместо этого я получаю: 2016-08-25 00: 19: 30,560

Если я затем установить дату 2016-08-25 2: 19: 30.560. Затем я получаю 2016-08-25 01: 19: 30.560. Он делает это правильно.

DECLARE @FakeCurrentDateTime1 datetime 
DECLARE @FakeCurrentDateTime2 datetime 

SET @FakeCurrentDateTime1 = '2016-08-25 1:19:30.560' 

SET @FakeCurrentDateTime2 = DATEADD(hour, -1, @FakeCurrentDateTime1) 

SELECT @FakeCurrentDateTime2 

DECLARE @FakeCurrentDateTime3 datetime 
DECLARE @FakeCurrentDateTime4 datetime 

SET @FakeCurrentDateTime3 = '2016-08-25 2:19:30.560' 
SET @FakeCurrentDateTime4 = DATEADD(hour, -1, @FakeCurrentDateTime3) 

SELECT @FakeCurrentDateTime4 
+6

ли вы имеете в виду 1 ПМ? 1 PM - 13:00 в SQL. –

+0

@AdamV. , , Вы должны написать и ответить и объяснить логику. –

ответ

3

1:19:30.560 is 1:19 AM in SQL. Если вы хотите PM, вам нужно 13:19:30.560 вместо этого, или же вам необходимо предоставить «ПМ», как так:

SET @FakeCurrentDateTime1 = '2016-08-25 1:19:30.560 PM' 
+2

Или выразить время как '13: 19: 30.560'. –

Смежные вопросы