sql >> Databáze >  >> RDS >> Sqlserver

Aritmetická chyba přetečení při převodu výrazu na datový typ datetime

31. září není datum, takže SQL jej nemůže převést na datum.

Kromě toho byste měli pevně zakódovat data ve formátu nespecifické kultury (rrrrMMdd). 01/08/2012 můžete převést na 1. srpna na vašem serveru, ale spustit na jiném a může to být 8. ledna. 20120801 se převede na 1. srpna na všech stroje.

Navíc Proč převádíte data na NVARCHAR ? Odstraňujete veškeré výhody indexů, které máte, a také provádíte zbytečné implicitní a explicitní konverze. Za předpokladu MESSAGEINSERTDATE je sloupec DATETIME, který můžete použít pouze

WHERE MESSAGEINSERTDATE BETWEEN '20120801' AND '20120930'

Pokud potřebujete odstranit čas z MESSAGEINSERTDATE použití

CAST(MESSAGEINSERTDATE AS DATE)



  1. PHP &MySQL Jak zobrazit kategorie libovolné podkategorie z databáze

  2. Jak mohu načíst seznam parametrů z uložené procedury na serveru SQL Server

  3. GROUP BY a agregovat sekvenční číselné hodnoty

  4. Neprimární cizí klíče v Django