Affichage des articles dont le libellé est Format. Afficher tous les articles
Affichage des articles dont le libellé est Format. Afficher tous les articles

09 novembre 2018

SQL - Les Formats de date et heure

Vous galérez pas à trouver le bon format pour convertir les dates en texte dans SQL Server vous ?
Moi Oui !!
Du coup j'utilise la requête ci-dessous pour trouver le bon format en fonction de mes besoins :

DECLARE @date DATETIME
SET @date = GETDATE() --- la date que vous voulez !!
SELECT format, CONVERT(NVARCHAR(MAX), @date, format)
FROM (SELECT ROW_NUMBER() OVER(ORDER BY object_id) - 1 AS format
FROM sys.all_objects) x
WHERE format < 132 
  AND format NOT IN (15, 16, 17, 18, 19, 115, 116, 117, 118, 119, 122, 123, 124, 125, 128, 129) 
  AND (format < 26 OR format > 99 )


On compte le nombre de ligne de sys.all_objets ou de n'importe quelle table qui a plus de 132 lignes !!
Puis on exclus les ID non valides de la fonction convert
Puis on affiche toutes les conversions possibles.

La doc SQL SERVER de la fonction CONVERT est ici


Plus sexy avec une CTE récursive :
DECLARE @date DATETIME
SET @date = GETDATE()
;
WITH nombre (idx)
 AS (SELECT 0 AS idx
     UNION ALL SELECT idx + 1 FROM nombre WHERE idx < 131)
SELECT idx AS format, CONVERT(NVARCHAR(MAX), @date, idx) FROM nombre 
WHERE idx NOT IN (15, 16, 17, 18, 19, 115, 116, 117, 118, 119, 122, 123, 124, 125, 128, 129) 
  AND (idx < 26 OR idx> 99 )
OPTION(maxrecursion 132)

A noter le ; avant le WITH De la CTE
A noter aussi on utilise la clause OPTION pour augmenter la profondeur de récursion car ici on a besoin d'une profondeur connue de 132



Enjoy !

07 novembre 2013

c# : Formater un booléen en Oui/Non

Pour formater un booléen en Oui/Non

string.Format("{0:Oui;;Non}", Convert.ToInt32(nombool));
ou
$"gna gna gna {Convert.ToInt32(nombool):Oui;;Non}";

N'oubliez pas le Convert en int sinon le résultat affiché ne sera pas le bon !!!!

On utilise ici le format personnalisé des entiers avec deux points virgules :

Premier format pour les entiers positifs : ici on force le Oui
Second format pour les entiers négatifs : ici on ne met rien pour dire de faire comme les entiers positifs
Troisième format pour la valeur zéro : ici on force à Non

Convert.ToInt32(Bool) renvoie 1 ou 0 on gère ainsi tous les cas