Sql Server Case Date Between

  1. Sql Server Case Date Between Excel

I want to compare 2 dates and use CASE in WHERE to implement this logic:if the end date is larger than 2016-06-30, the end date should be 6/30/2016.

This SQL Server tutorial explains how to use the SQL Server (Transact-SQL) CASE statement with syntax and examples. In SQL Server (Transact-SQL), the CASE statement has the functionality of an IF-THEN-ELSE statement. You can use the CASE statement within a SQL statement.

However, I'm encountering an error. The error message is

Missing keyword

My code is below:

Can you help me?

Andriy M
17k6 gold badges39 silver badges78 bronze badges
bettybetty

2 Answers

You could try the following to achieve the result. Your date format string is invalid and the column alias should be placed after the END clause of CASE expression.

OR

JSapkotaJSapkota
7,5261 gold badge10 silver badges24 bronze badges

Something isn't right in thisYour using the case in the where clause but I don't think that's where you want it. if seems like you just want to format the date

Your not actually comparing the end date to anything which is where you're missing something (it is expecting there result of your case statement to be compared to something)

I think this is what you're trying to do

Ste BovSte Bov

Not the answer you're looking for? Browse other questions tagged oraclecase or ask your own question.

-->

S’APPLIQUE À : SQL Server (à partir de 2008) Azure SQL Database Azure SQL Data Warehouse Parallel Data Warehouse APPLIES TO: SQL Server (starting with 2008) Azure SQL Database Azure SQL Data Warehouse Parallel Data Warehouse

Définit un intervalle sur lequel la recherche doit porter.Specifies a range to test.

Conventions de la syntaxe Transact-SQLTransact-SQL Syntax Conventions

SyntaxeSyntax

ArgumentsArguments

test_expressiontest_expression
Correspond à l’expression à tester dans la plage définie par begin_expression et end_expression.Is the expression to test for in the range defined by begin_expressionand end_expression.test_expression doit être du même type de données que begin_expression et end_expression.test_expression must be the same data type as both begin_expression and end_expression.

NOTNOT
Indique la négation du résultat du prédicat.Specifies that the result of the predicate be negated.

begin_expressionbegin_expression
Toute expression valide.Is any valid expression.begin_expression doit être du même type de données que test_expression et end_expression.begin_expression must be the same data type as both test_expression and end_expression.

end_expressionend_expression
Toute expression valide.Is any valid expression.end_expression doit être du même type de données que test_expression et begin_expression.end_expression must be the same data type as both test_expressionand begin_expression.

ANDAND
Agit en tant qu’espace réservé qui indique que test_expression doit se trouver dans la plage indiquée par begin_expression et end_expression.Acts as a placeholder that indicates test_expression should be within the range indicated by begin_expression and end_expression.

Types des résultatsResult Types

BooléenBoolean

Sql Server Case Date Between Excel

Valeur des résultatsResult Value

BETWEEN retourne TRUE si la valeur de test_expression est supérieure ou égale à la valeur de begin_expression et inférieure ou égale à la valeur de end_expression.BETWEEN returns TRUE if the value of test_expression is greater than or equal to the value of begin_expression and less than or equal to the value of end_expression.

NOT BETWEEN retourne TRUE si la valeur de test_expression est inférieure à la valeur de begin_expression ou supérieure à la valeur de end_expression.NOT BETWEEN returns TRUE if the value of test_expression is less than the value of begin_expression or greater than the value of end_expression.

NotesRemarks

Pour spécifier un intervalle exclusif, employez les opérateurs « supérieur à » (>) et « inférieur à » (<).To specify an exclusive range, use the greater than (>) and less than operators (<).Si l'un des paramètres fournis avec le prédicat BETWEEN ou NOT BETWEEN a la valeur NULL, le résultat est UNKNOWN.If any input to the BETWEEN or NOT BETWEEN predicate is NULL, the result is UNKNOWN.

ExemplesExamples

A.A.Utilisation de BETWEENUsing BETWEEN

L’exemple suivant retourne des informations sur les rôles de base de données dans une base de données.The following example returns information about the database roles in a database.La première requête retourne tous les rôles.The first query returns all the roles.Le deuxième exemple utilise la clause BETWEEN pour limiter les rôles aux valeurs database_id spécifiées.The second example uses the BETWEEN clause to limit the roles to the specified database_id values.

Voici l'ensemble des résultats.Here is the result set.

B.B.Utilisation de > et de < à la place de BETWEENUsing > and < instead of BETWEEN

L'exemple suivant utilise les opérateurs « supérieur à » (>) et « inférieur à » (<) ; ceux-ci n'étant pas inclusifs, il retourne neuf lignes au lieu des dix retournées dans l'exemple précédent.The following example uses greater than (>) and less than (<) operators and, because these operators are not inclusive, returns nine rows instead of ten that were returned in the previous example.

Voici l'ensemble des résultats.Here is the result set.

C.C.Utilisation de NOT BETWEENUsing NOT BETWEEN

L'exemple suivant recherche toutes les lignes situées en dehors d'une plage spécifiée allant de 27 à 30.The following example finds all rows outside a specified range of 27 through 30.

D.D.Utilisation de BETWEEN avec des valeurs datetimeUsing BETWEEN with datetime values

L’exemple suivant récupère les lignes dans lesquelles les valeurs datetime sont situées entre '20011212' et '20020105' incluses.The following example retrieves rows in which datetime values are between '20011212' and '20020105', inclusive.

Voici l'ensemble des résultats.Here is the result set.

La requête récupère les lignes attendues car les valeurs de date dans la requête et les valeurs datetime stockées dans la colonne RateChangeDate ont été spécifiées sans la partie heure de la date.The query retrieves the expected rows because the date values in the query and the datetime values stored in the RateChangeDate column have been specified without the time part of the date.Lorsque la partie heure n'est pas spécifiée, la valeur par défaut est 12:00 A.M.When the time part is unspecified, it defaults to 12:00 A.M.Notez qu'une ligne qui contient une heure ultérieure à 12h00Note that a row that contains a time part that is after 12:00 A.M.le 5 janvier 2002 ne serait pas retournée par cette requête car cette date se situe hors de la plage.on 2002-01-05 would not be returned by this query because it falls outside the range.

Between

Voir aussiSee Also

> (Supérieur à) (Transact-SQL)> (Greater Than) (Transact-SQL)
< (Inférieur à) (Transact-SQL)< (Less Than) (Transact-SQL)
Expressions (Transact-SQL)Expressions (Transact-SQL)
Fonctions intégrées (Transact-SQL)Built-in Functions (Transact-SQL)
Opérateurs (Transact-SQL)Operators (Transact-SQL)
SELECT (Transact-SQL)SELECT (Transact-SQL)
WHERE (Transact-SQL)WHERE (Transact-SQL)