Comment créer un paramètre de date codée en dur pour une utilisation dans une requête?
Exemple (ne fonctionne pas comme ça):
SELECT * FROM User
WHERE LastActivity > Date(1980,1,1)
Où la Date doit utiliser les paramètres de l'année, le mois, le jour comme des nombres entiers. Pour éviter les ennuis avec les paramètres régionaux, j'ai explicitement ne souhaitez pas utiliser une chaîne comme "aaaa/mm/jj" ou similaire.
Je travaille avec Microsoft SQL Server Management Studio sur un MSSQL Base de données, si cette matière.
Note: je suis sûr que c'est trivial, mais je ne pouvais pas trouver la solution ni à l'aide de google.
Pouvez-vous utiliser un Unixtimestamp?
Oui.......................
Alors que je ne sais pas lequel de programmation/langage de script que vous utilisez pour faire cette requête, je suis sûr qu'il a certaines capacités pour convertir une date de référence à un timestamp unix. Ou tout simplement de coder en dur le timestamp lui-même.
En plus des autres commentaires et réponses, notez que le documentation décrit en détail quels formats sont possibles pour
Oui.......................
Alors que je ne sais pas lequel de programmation/langage de script que vous utilisez pour faire cette requête, je suis sûr qu'il a certaines capacités pour convertir une date de référence à un timestamp unix. Ou tout simplement de coder en dur le timestamp lui-même.
En plus des autres commentaires et réponses, notez que le documentation décrit en détail quels formats sont possibles pour
datetime
littéraux. En particulier, la note de la section sur la norme ISO 8601, qui utilise le terme "sans ambiguïté".OriginalL'auteur Marcel | 2012-12-11
Vous devez vous connecter pour publier un commentaire.
Pour éviter cela, le meilleur moyen est de passer de la date de langue neutre comme
YYYYMMDD
. De cette manière, il sera indépendante de la langue:Vous êtes les bienvenus en tout temps.
OriginalL'auteur Mahmoud Gamal
Utilisation
ISO date format
qui estyyyymmdd
@months
et@date
devraient être remplis de zéros pour être convertis correctement, une façon est d'utiliserRIGHT(REPLICATE('0', 2) + CAST(@Month AS VARCHAR(2)), 2)
au lieu deCONVERT(VARCHAR(2), @Month)
la même chose avec@date
.déjà fait.
OriginalL'auteur Kaf
J'ai toujours trouvé que la plupart des bases de données acceptera 'jj-mmm-aaaa" comme un paramètre de date et je l'utilise presque partout. Il y en a qui ne le font pas (E. g. MS/Access) mais SQL/Server n'. Ce format est largement acceptée, même si évidemment vous devrez peut-être faire un langage spécifique.
set language spanish; select cast('11-Dec-2012' as datetime);
. Comme je l'ai commenté ci-dessus, la documentation dit que le format ISO 8601 est sans équivoque, d'autres formats peuvent être interprétées différemment. ISO 8601 est même interprétée correctement si vous avez raté avecSET DATEFORMAT
.Vous êtes bien sûr tout à fait raison.
OriginalL'auteur Ciarán
Je pense que le "Convertir" la fonction fait ce que vous cherchez. Pour rendre le 20 Mars 1980, procédez de la manière suivante:
Votre requête exacte serait:
Si vous utilisez SQL Server 2012, vous pouvez utiliser la plus simple DATEFROMPARTS fonction:
OriginalL'auteur sean