Je recherche une fonction SQL Server pour renvoyer la valeur minimale pour datetime, à savoir le 1er janvier 1753. Je préfère ne pas coder en dur cette valeur de date dans mon script.
Est-ce que quelque chose comme ça existe? (À titre de comparaison, en C #, je pourrais simplement le faire DateTime.MinValue)
Ou devrais-je écrire cela moi-même?
J'utilise Microsoft SQL Server 2008 Express.
sql-server
datetime
function
Jérémie
la source
la source
CONVERT(smalldatetime, 0)
poursmalldatetime
.Réponses:
Vous pouvez écrire une fonction définie par l'utilisateur qui renvoie la valeur de date min comme ceci:
Ensuite, utilisez cette fonction dans vos scripts, et si jamais vous avez besoin de la changer, il n'y a qu'un seul endroit pour le faire.
Vous pouvez également utiliser cette requête si vous la préférez pour une meilleure lisibilité:
Exemple de fonction
Usage
la source
'1753-1-1'
c'est bien mieux que-53690
cast('17530101' as datetime)
permettra également d'éviter les problèmes régionaux et est légèrement plus lisible que -53690.Avez-vous vu l' objet SqlDateTime ? utilisez
SqlDateTime.MinValue
pour obtenir votre date minimum (1 janvier 1753).la source
Comme je ne peux pas commenter la réponse acceptée en raison de points de réputation insuffisant, mon commentaire est une réponse.
l'utilisation de
select cast('1753-1-1' as datetime)
est due échouer si elle est exécutée sur une base de données avec des paramètres régionaux n'acceptant pas une chaîne de données au format AAAA-MM-JJ.Utilisez à la place le
select cast(-53690 as datetime)
ou aConvert
avec le format datetime spécifié.la source
Saisissez la date en tant que valeur native
'yyyymmdd'
pour éviter les problèmes régionaux:Oui, ce serait génial si TSQL avait
MinDate() = '00010101'
, mais pas de chance.la source
Voici un moyen rapide et hautement lisible d'obtenir la valeur de date minimale
Remarque: il s'agit d'une fonction déterministe , donc pour améliorer encore les performances, nous pouvons également appliquer WITH SCHEMABINDING à la valeur de retour.
Créer une fonction
Appeler la fonction
Exemple 1
Exemple 2
Exemple 3
Exemple 4
Exemple 5
la source
Ce n'est pas le 1er janvier 1753 mais sélectionnez cast ('' as datetime) qui révèle: 1900-01-01 00: 00: 00.000 donne la valeur par défaut par serveur SQL. (Cela me semble plus non initialisé de toute façon)
la source
SELECT CONVERT(DATETIME, 0)
) mais la valeur minimale réelle que la date / heure peut contenir dans SQL Server est en fait en 1753 ce qu'OP a écrit. C'est à ce moment-là que l'Amérique est également passée au calendrier grégorien et que SQL Server n'a pas à gérer les jours manquants, etc.SELECT CONVERT(DATETIME, -53690)
donne1753-01-01 00:00:00.000
etSELECT CONVERT(DATETIME, -53691)
donne une erreur concernant un débordement.C'est ce que j'utilise pour obtenir la date minimale dans SQL Server. Veuillez noter qu'il est compatible avec la mondialisation:
Appel en utilisant:
la source
La plage de
datetime
ne changera pas, car cela romprait la compatibilité descendante. Vous pouvez donc le coder en dur.la source
convert
fait, maisGetMinDate()
je devrais plonger dans la définition de la fonction. Donc, si je devais maintenir votre code, je préférerais laconvert
variante.convert
fait, mais vous ne connaissez pas nécessairement la signification de1753-1-1
.