Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Защо YEAR ще се провали с грешка при преобразуване от дата?

Предполагам, че RValues е низова колона от някакъв тип по някаква причина. Трябва да поправите това и да съхранявате данни за дата, като използвате тип данни за дата (очевидно в отделна колона от този смесен пакет).

Ако не можете да поправите това, тогава можете да предотвратите това, което Damien описа по-горе чрез:

CASE WHEN ISDATE(RValues) = 1 THEN CONVERT(Date, RValues) END AS FechaFirma 

(Което ще направи "датата" NULL ако SQL Server не може да разбере как да го преобразува в дата.)

Не можете да предотвратите това просто като добавите WHERE клауза, тъй като SQL Server често ще се опитва да направи опит за преобразуване в SELECT списък, преди да извършите филтъра (всичко зависи от плана). Също така не можете да принудите реда на операциите, като използвате подзаявка, CTE, подсказки за ред на присъединяване и т.н. Има отворен елемент Connect за този проблем - те са "наясно с него" и "се надяват да го разгледат в бъдеща версия ."

С изключение на CASE израз, който принуждава SQL Server да оцени резултата от ISDATE(), преди да се опита да конвертира (стига да не присъстват агрегати в нито един от клоновете ), можете да:

  • изхвърлете филтрираните резултати в #temp таблица и след това изберете от тази #temp таблица и само тогава приложете преобразуването.
  • просто върнете низа и го третирайте като дата на клиента и издърпайте ГОДИНА/МЕСец и т.н. части от него там
  • просто използвайте манипулиране на низове, за да изтеглите YEAR =LEFT(col,4) и т.н.
  • използвайте TRY_CONVERT() тъй като току-що забелязах, че сте на SQL Server 2012:

    TRY_CONVERT(DATE, RValues) AS FechaFirma
    



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Да се ​​изпълни ли съхранена процедура с изходен параметър?

  2. как да получите върната стойност от процедура sql сървър 2005 до c#

  3. UNION резултатите от множество съхранени процедури

  4. най-лесният начин за извършване на повтарящо се качване на текстов файл на sql сървър

  5. АКТУАЛИЗИРАНЕ или СЛИВАНЕ на много големи таблици в SQL Server