sql >> Databasteknik >  >> RDS >> Sqlserver

Aritmetiskt spillfel vid konvertering av uttryck till datatyp datetime

Den 31 september är inte ett datum, så SQL kan inte konvertera det till ett.

Dessutom bör du hårdkoda datum i ett kulturospecifikt format (ååååMMdd). 01/08/2012 kan konvertera till 1 augusti på din server, men körs på en annan och det kan vara 8 januari. 20120801 konverteras till 1 augusti alla maskiner.

Dessutom Varför konverterar du datum till NVARCHAR ? Du tar bort alla fördelar med index du har och utför även onödiga implicita och explicita omvandlingar. Förutsatt MESSAGEINSERTDATE är en DATETIME-kolumn som du bara kan använda

WHERE MESSAGEINSERTDATE BETWEEN '20120801' AND '20120930'

Om du behöver ta bort tiden från MESSAGEINSERTDATE använda

CAST(MESSAGEINSERTDATE AS DATE)



  1. MySql, PHP visa Bild på HTML

  2. Hur man lägger till administratörsservern i R12.2

  3. Sparar kryssruta (booleska) värden i mysql databas med php

  4. om Rad1 =Värde 1, Uppdatera andra rader