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

Obsahuje MS SQL Server hranice rozsahu?

Operátor BETWEEN je zahrnut.

Z Books Online:

BETWEEN vrátí TRUE, pokud je hodnota oftest_expression větší nebo rovna hodnotě begin_expression a menší nebo rovna hodnotě ofend_expression.

Upozornění na datum a čas

Poznámka:S DateTimes musíte být opatrní; pokud je uvedeno pouze datum, hodnota se bere od půlnoci daného dne; Abyste předešli zmeškání časů v rámci vašeho koncového data nebo opakování sběru dat z následujícího dne o půlnoci v několika rozsazích, vaše koncové datum by mělo být 3 milisekundy před půlnocí dne následujícího po datu do data. 3 milisekundy, protože méně než toto a hodnota bude zaokrouhlena nahoru na půlnoc následujícího dne.

např. Chcete-li získat všechny hodnoty do června 2016, musíte spustit:

where myDateTime between '20160601' and DATEADD(millisecond, -3, '20160701')

tj.

where myDateTime between '20160601 00:00:00.000' and '20160630 23:59:59.997'

datetime2 a datetimeoffset

Odečtením 3 ms od data budete zranitelní vůči chybějícím řádkům z okna 3 ms. Správné řešení je také to nejjednodušší:

where myDateTime >= '20160601' AND myDateTime < '20160701'


  1. Jak zobrazit chyby v sqlplus

  2. drahokam mysql2 zkompilován pro špatnou klientskou knihovnu mysql

  3. Jak omezit výsledky v T-SQL

  4. Základy tabulkových výrazů, Část 6 – Rekurzivní CTE