Dans SQL Server, j'ai une colonne DATETIME
qui inclut un élément de temps.Comparer une chaîne de date à datetime dans SQL Server?
Exemple:
'14 AUG 2008 14:23:019'
Quelle est la méthode mieux pour sélectionner uniquement les enregistrements pour un jour donné, en ignorant la partie de temps?
Exemple: (pas sûr, car il ne correspond pas à la partie de temps et retourne aucune ligne)
DECLARE @p_date DATETIME
SET @p_date = CONVERT(DATETIME, '14 AUG 2008', 106)
SELECT *
FROM table1
WHERE column_datetime = @p_date
Note: Compte tenu de ce site est aussi griffonner des notes et des techniques que vous prenez et oublier , Je vais poster ma propre réponse à cette question car DATETIME stuff dans MSSQL est probablement le sujet que je recherche le plus dans SQLBOL.
Mise à jour exemple Clarifiée pour être plus précis.
Modifier Désolé, mais j'ai eu des réponses WRONG down-mod (réponses qui renvoient des résultats erronés).
@Jorrit: WHERE (date>'20080813' AND date<'20080815')
retournera le 13 et le 14.
@wearejimbo: Fermer, mais pas de cigare! un badge qui vous est attribué. Vous avez manqué des documents écrits au 14/08/2008 23: 59: 001 à 23: 59: (.-À-dire moins de 1 seconde avant minuit) 999
Je crois que CAST ('14 août 2008' comme DateTime) est légèrement mieux. Je pense que c'est un peu plus lisible et je crois que CAST est plus portable que CONVERT() en ce que CAST() est compatible avec ANSI SQL-92 et -99 –
Vous pouvez utiliser le mot-clé BETWEEN comme raccourci pour cette réponse. –
@BorhanMooz, en fait, le BETWEEN ne saisit pas l'intervalle> =/
NargothBond