Logga in med Microsoft
Logga in eller skapa ett konto.
Hej,
Välj ett annat konto.
Du har flera konton
Välj det konto som du vill logga in med.

Microsoft distribuerar Microsoft SQL Server 2008 R2 Service Pack 1 (SP1)-korrigeringsfiler som en nedladdnings bar fil. Eftersom de här korrigeringarna är kumulativa innehåller alla nya versioner alla snabb korrigeringar och alla säkerhets korrigeringar som ingick i den tidigare versionen av SQL Server 2008 R2 Service Pack 1 (SP1).

Symptom

Tänk dig följande situation:

  • Du har en kolumn av typen DateTimeOffset -datatyp i en tabell i Microsoft sql Server 2008 R2 eller i Microsoft sql Server 2012.

  • Du skapar ett index i kolumnen DateTimeOffset .

  • Du konverterar DateTimeOffset -datatypen till en smalldatetime -datatyp genom att använda funktionen Cast eller konvertera utan argumentet format eller när värdet för format argumentet är 0.

  • Resultatet av funktionen Cast eller konvertera används i ett filter i en Transact-SQL-fråga.

  • Du kör Transact-SQL-frågan.

I det här scenariot är resultatet som returnerats av frågan felaktigt, eftersom filtret inte fungerar som det ska. Antag till exempel att kolumnen DateTimeOffset med namnet "datum" innehåller följande värden:

  • 2011-05-21 23:00:00 -01:00

  • 2011-05-21 23:00:00 +00:00

  • 2011-05-21 23:00:00 +01:00

Du kör följande fråga:

SELECT Date FROM TestTable WHERE CAST(Date AS smalldatetime)= '2011-05-21 23:00:00'

Resultatet av frågan returnerar bara en rad. Det förväntade resultatet ska returnera rader för alla tre värdena.

Lösning

Kumulativ uppdaterings information

SQL Server 2012

Korrigeringen för det här problemet släpptes först i kumulativ uppdatering 3 för SQL Server 2012. Om du vill veta mer om det här kumulativa uppdaterings paketet klickar du på följande artikel nummer och läser artikeln i Microsoft Knowledge Base:

2723749 Kumulativt uppdaterings paket 3 för SQL Server 2012Obs! Eftersom build-versionerna är kumulativa innehåller varje ny korrigerings utgåva alla snabb korrigeringar och alla säkerhets korrigeringar som ingick med föregående version av SQL Server 2012. Microsoft rekommenderar att du använder den senaste korrigerings versionen som innehåller den här snabb korrigeringen. Om du vill veta mer klickar du på följande artikelnummer och läser artikeln i Microsoft Knowledge Base:

2692828 SQL Server 2012-versioner som släpptes efter att SQL Server 2012 släpptes Du måste använda en SQL Server 2012 Hotfix för en installation av SQL Server 2012.

SQL Server 2008 R2 Service Pack 2

Korrigeringen för det här problemet släpptes först i kumulativ uppdatering 1 för SQL Server 2008 R2 Service Pack 2. Om du vill veta mer om hur du hämtar det här kumulativa uppdaterings paketet klickar du på följande artikel nummer och läser artikeln i Microsoft Knowledge Base:

2720425 Kumulativt uppdaterings paket 1 för SQL Server 2008 R2 Service Pack 2Obs! Eftersom build-versionerna är kumulativa innehåller varje ny korrigerings utgåva alla snabb korrigeringar och alla säkerhets korrigeringar som ingick med föregående version av SQL Server 2008 R2. Vi rekommenderar att du använder den senaste korrigerings versionen som innehåller den här snabb korrigeringen. Om du vill veta mer klickar du på följande artikelnummer och läser artikeln i Microsoft Knowledge Base:

2730301 SQL Server 2008 R2-versioner som släpptes efter SQL Server 2008 R2 Service Pack 2 släpptes

SQL Server 2008 R2 SP1

Korrigeringen för det här problemet släpptes först i kumulativ uppdatering 7. Om du vill veta mer om hur du hämtar det här kumulativa uppdaterings paketet för SQL Server 2008 R2 Service Pack 1 klickar du på följande artikel nummer och läser artikeln i Microsoft Knowledge Base:

2703282 Kumulativt uppdaterings paket 7 för SQL Server 2008 R2 SP1Obs! Eftersom build-versionerna är kumulativa innehåller varje ny korrigerings utgåva alla snabb korrigeringar och alla säkerhets korrigeringar som ingick med föregående version av SQL Server 2008 R2 Service Pack 1. Vi rekommenderar att du använder den senaste korrigerings versionen som innehåller den här snabb korrigeringen. Om du vill veta mer klickar du på följande artikelnummer och läser artikeln i Microsoft Knowledge Base:

2567616 SQL Server 2008 R2-versioner som släpptes efter SQL Server 2008 R2 SP1

Mer information

Gör så här för att återskapa problemet:

  1. Kör följande fråga för att skapa en tabell med kolumnen DateTimeOffset och infoga några poster:CREATE TABLE #TestTimeZones (dto datetimeoffset(0)); GO INSERT INTO #TestTimeZones(dto) VALUES ('2011-05-21 23:00:00 -01:00'), ('2011-05-21 23:00:00 +00:00'), ('2011-05-21 23:00:00 +01:00'); GO

  2. Kör följande fråga så ser du att alla tre värden visas korrekt i det returnerade resultatet:DECLARE @t smalldatetime = '2011-05-21 23:00:00' SELECT dto AS withoutIndex FROM #TestTimeZones WHERE CAST(dto AS smalldatetime)=@t;

  3. Kör följande fråga för att skapa ett index i kolumnen "DTO" och upprepa samma fråga:CREATE INDEX IX_testTimeZones_Dto ON #TestTimeZones(dto); GO -- Repeat the same query DECLARE @t smalldatetime = '2011-05-21 23:00:00' SELECT dto AS withIndex FROM #TestTimeZones WHERE CAST(dto A smalldatetime)=@t; GO

  4. Kör frågan i steg 2 igen. Den här gången returnerar frågan bara en rad.

  5. Kör följande fråga för att ta bort indexet och tabellen som du skapade:DROP INDEX IX_testTimeZones_Dto ON #TestTimeZones; GO DROP TALBE #TestTimeZones; GO

Referenser

Mer information om funktionerna CAST och konvertera finns i följande MSDN-webbplats:

Allmän information om funktionerna CAST och konvertera i SQL Server

Status

Microsoft har bekräftat att det här är ett problem i Microsoft-produkterna som nämns i "gäller".

Behöver du mer hjälp?

Vill du ha fler alternativ?

Utforska prenumerationsförmåner, bläddra bland utbildningskurser, lär dig hur du skyddar din enhet med mera.

Communities hjälper dig att ställa och svara på frågor, ge feedback och få råd från experter med rika kunskaper.

Hade du nytta av den här informationen?

Hur nöjd är du med språkkvaliteten?
Vad påverkade din upplevelse?
Genom att trycka på skicka, kommer din feedback att användas för att förbättra Microsofts produkter och tjänster. IT-administratören kan samla in denna data. Sekretesspolicy.

Tack för din feedback!

×