Je recherche une fonction SQL Server pour renvoyer la valeur minimale pour datetime, à savoir le 1er janvier 1753. Je préférerais ne pas coder cette valeur de date dans mon script.
Est-ce que quelque chose comme ça existe? (À titre de comparaison, en C #, je pourrais simplement faire DateTime.MinValue)
Ou devrais-je écrire cela moi-même?
J'utilise Microsoft SQL Server 2008 Express.
Vous pouvez écrire un Fonction définie par l'utilisateur qui renvoie la valeur de date min comme ceci:
select cast(-53690 as datetime)
Ensuite, utilisez cette fonction dans vos scripts, et si vous avez besoin de la changer, il n’ya qu’un seul endroit pour le faire.
Vous pouvez également utiliser cette requête si vous le préférez pour une meilleure lisibilité:
select cast('1753-1-1' as datetime)
Exemple de fonction
create function dbo.DateTimeMinValue()
returns datetime as
begin
return (select cast(-53690 as datetime))
end
Utilisation
select dbo.DateTimeMinValue() as DateTimeMinValue
DateTimeMinValue
-----------------------
1753-01-01 00:00:00.000
Avez-vous vu l'objet SqlDateTime ? utilisez SqlDateTime.MinValue
pour connaître votre date minimum (1 janvier 1753).
Comme je ne peux pas commenter la réponse acceptée en raison de points de réputation insuffisants, mon commentaire est une réponse.
l'utilisation de select cast('1753-1-1' as datetime)
doit é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 plutôt la select cast(-53690 as datetime)
ou une Convert
avec le format de date/heure spécifié.
Ce n'est pas le 1er janvier 1753, mais une distribution sélectionnée ('' as datetime) qui révèle: (Semble plus non initialisé pour moi de toute façon)
Entrez la date en tant que valeur native 'yyyymmdd'
pour éviter les problèmes régionaux:
select cast('17530101' as datetime)
Oui, ce serait formidable si TSQL avait MinDate() = '00010101'
, mais pas de chance.
Voici un moyen rapide et très lisible d'obtenir la valeur de date min.
Créer une fonction
CREATE FUNCTION MinDate()
RETURNS DATETIME
AS
BEGIN
RETURN CONVERT(DATETIME, -53690)
END
Appelle la fonction
dbo.MinDate()
Exemple 1
PRINT dbo.MinDate()
Exemple 2
PRINT 'The minimimum date allowed in an SQL database is ' + CONVERT(VARCHAR(MAX), dbo.MinDate())
Exemple 3
SELECT * FROM Table WHERE DateValue > dbo.MinDate()
Exemple 4
SELECT dbo.MinDate() AS MinDate
Exemple 5
DECLARE @MinDate AS DATETIME = dbo.MinDate()
SELECT @MinDate AS MinDate
La plage de datetime
ne changera pas car cela annulerait la compatibilité ascendante. Donc, vous pouvez le coder en dur.
C'est ce que j'utilise pour obtenir la date minimum dans SQL Server. Veuillez noter qu'il est favorable à la mondialisation:
CREATE FUNCTION [dbo].[DateTimeMinValue]()
RETURNS datetime
AS
BEGIN
RETURN (SELECT
CAST('17530101' AS datetime))
END
Appeler en utilisant:
SELECT [dbo].[DateTimeMinValue]()