0
votes

Obtenez la date SQL entre

Je veux obtenir des données à partir d'une gamme de dates sélectionnées dans SQL Server.

Ceci est la requête SQL (SQL Server 2005) P>

SELECT  * FROM  slips WHERE  CONVERT(char,  date_Of_Birth, 101)  BETWEEN ('01/08/2019') AND ('21/08/2019') 


5 commentaires

Les questions SQL ne déclarant pas que le système de base de données utilisée est comme des questions de langue cachées sur la langue en question. Surtout brisé. (On dirait que vous voulez dire MS SQL Server.)


Vous avez appris une règle inutile (ne vous inquiétez pas à ce sujet, tout le monde fait à un moment donné) que vous pouvez rendre les choses à travailler si vous traitez simplement tout comme des chaînes. Malheureusement, cette règle n'existe vraiment que si vous définissez «le travail» comme «compile et fonctionne sans augmenter les erreurs de langue». Cela fonctionne rarement si vous voulez des résultats corrects. La solution consiste à travailler dans l'autre direction - Obtenez toutes vos données, variables, etc. pour utiliser les types de données corriger . Ainsi, des choses comme des comparaisons peuvent utiliser qui tapez les règles S, plutôt que les règles de chaîne.


@FHULUFHELOHYYAYAYA Quel est le type de données de la colonne date_of_birth


@Zulqarnainjalil im en utilisant nvarchar. J'ai changé mon format de date de m / d / aaaa à jj / mm / aaaa et sa gamme sélectionnée


@fhulufhelohanyhanyAnya alors vous devriez si la deuxième requête que j'ai posté dans ma réponse


4 Réponses :


0
votes

Vous pouvez utiliser entre code> avec des dates ( Voir aussi )

SELECT
    * 
FROM slips 
WHERE date_Of_Birth BETWEEN '01/08/2019' AND '21/08/2019'


0 commentaires

3
votes

N'utilisez pas entre code> avec des dates. ici est Une bonne explication de pourquoi pas.

En outre, n'utilisez pas de comparaisons de chaîne pour les dates. SQL Server a beaucoup de belles fonctionnalités de date intégrées. P>

Je recommanderais: P>

select s.*
from slips s
where s.date_of_birth >= '2019-08-01' and
      s.date_of_birth < '2019-08-22'


0 commentaires

0
votes

Si vous souhaitez sélectionner les bordereaux au dernier mois - remplacez n avec des mois xxx pré>

si vous souhaitez sélectionner les bordereaux au dernier jour - remplacez n avec des jours p>

Select *
FROM slips 
Where DATEDIFF(YEAR, date_of_birth, GETDATE()) Between 1 and N


0 commentaires

1
votes

Je suppose que votre fort> date_of_birth strud> est le type de date, alors vous devez convertir votre string strong> à date forte> xxx pré> p> Si votre date_of_birth fort> est String fort> Tapez le message que vous deviez utiliser ce P>

SELECT  * FROM  slips WHERE  CONVERT(date,  date_Of_Birth,103)  BETWEEN CONVERT(date,  '01/08/2019', 103) AND CONVERT(date,  '21/08/2019', 103) 


0 commentaires