2015-10-14 2 views
3
DELETE FROM BIZ 
WHERE [Orgnl_Cmpltn_Date] 
     BETWEEN '2014-02-31' AND '2014-04-01' 

Это заявление DELETE, которое я написал. Произошла ошибка:SQL Server - Удаление строк между диапазоном дат с использованием SQL. Ошибка перевода даты

Ошибка преобразования при преобразовании даты и/или времени из символьной строки.

Я знаю, что мне нужно написать правильный формат даты, но я не уверен, как это происходит.

Этот вопрос не был дан ответ в другом месте, потому что ответы, которые я видел, не указать формат даты (в контексте того, что я прошу)

+2

Какой РСУБД это? Добавьте тег, чтобы указать, используете ли вы 'mysql',' postgresql', 'sql-server',' oracle' или 'db2' - или что-то еще. –

+0

Возможный дубликат [Удалить из таблицы по дате] (http://stackoverflow.com/questions/804193/delete-from-a-table-based-on-date) –

+1

Учитывая текст ошибки, я сильно подозреваю, что это [tag: sql-server], но было бы лучше, чтобы OP подтвердил это первым. –

ответ

5

Вы писали 31 февраля ... Может быть ..... что дата не существует.

DELETE FROM BIZ 
WHERE [Orgnl_Cmpltn_Date] 
BETWEEN '2014-02-28' AND '2014-04-01' 

Для общей идеи даты новообращенного:

DELETE FROM BIZ 
WHERE [Orgnl_Cmpltn_Date] 
BETWEEN CONVERT(date,'2014.02.28',102) and CONVERT(date,'2014.04.01',102) 

Здесь Вы можете найти полный список значений для третьего параметра CONVERT https://msdn.microsoft.com/en-us/library/ms187928.aspx

+0

OH WOw! Блуждает Galma88. Ты генис. Эта дата не существует. – ObserveDBA

+0

':) ehehehehehe – Galma88

+0

Это сработало на самом деле. Спасибо. В будущем, как определить формат даты – ObserveDBA

2

Я предполагаю, что вы используете SQL Server, попробуйте это ..

DELETE FROM BIZ 
    WHERE CONVERT(DATE,[Orgnl_Cmpltn_Date]) 
    BETWEEN CONVERT(DATE,'2014-02-28') AND CONVERT(DATE,'2014-04-01') 
1

Используйте это вместо

DELETE FROM BIZ 
WHERE [Orgnl_Cmpltn_Date] >= '2014-02-28' 
AND [Orgnl_Cmpltn_Date] <= '2014'04'01' 

Я не знаю, если это имеет значение, но в феврале всего 28 или 29 дней.

1

пару вещей

1) Там нет такой даты, как 31 февраля, это может быть проблемой.

2) Если поставить диапазон дат в следующем формате, вы можете иметь больше удачи:

BETWEEN '20140228' AND '20140401' 

Позвольте мне знать, как вы получите на :-)

+0

, который является хорошим форматом даты для mssql, но не для других dbms, –