2010-11-23 5 views
0

J'utilise SQL Server 2008 et j'ai un fichier de base de données (mydata.mdf) dans lequel j'ai une colonne dans l'un des tableaux et cette colonne a le type de données (Temps) .Comment spécifier un format d'heure de 12 heures dans SQL Server 2008

J'ajouté ce fichier de base de données à mon projet WPF-C# (en utilisant VS2010), mais j'ai eu un problème et sa façon suivante:

Cette colonne (Time) traite le temps dans le système 24 heures, mais je veux Pour utiliser le système (12 heures) dans mon application, il est donc possible de définir une heure système de 12 heures dans SQL server2008.

et s'il n'y en a pas, que pensez-vous être la meilleure façon de gérer cela ???

Pleeeeeeeeeeease aide-moi le plus tôt possible parce que je suis pressé et je ne peux pas le comprendre ...

Répondre

2

Le temps dans la base de données n'est pas « formaté ». Il est représenté dans un format interne (pour lequel Google ne vous intéresse pas) qui lui permet de représenter chaque moment de la journée, au niveau de précision supporté.

Les valeurs ne sont formatées que lorsque votre application les convertit en chaînes afin de les afficher à l'utilisateur et que vous en avez le contrôle total. Par conséquent, si vous avez lu une heure dans une instance de la classe CLR DateTime, vous pouvez afficher 12 heures (en omettant la date) avec value.ToString ("h: mm: ss tt"). Les options de formatage personnalisées sont répertoriées here.

+0

c'est un problème de formatage :) – ykatchou

1

La réponse est que vous ne pouvez pas vraiment, mais ne vous inquiétez pas, ce n'est pas un problème. Formatez la date dans votre code C#. Le point est qu'une date et une heure sont une valeur absolue, ce qui est ce que vous voulez que SQL stocke, puis 12 heures vs 24 heures est un simple détail d'affichage, par exemple, 13h00 et 13h00 sont équivalents , ne vous inquiétez pas sur la façon dont les magasins SQL, puis dans # C utiliser les éléments suivants pour l'afficher:

DateTime myDateTime = GetTheTimeFromSomeMethod(); 
myDateTime.ToString("h:mm:ss tt"); 

il y a beaucoup de guides, This is a good one, mais il y a beaucoup d'autres par exemple this one

+0

merci pour la réponse mais mon problème est que, j'ai un listview, et ma source listview est une requête de la base de données – Mouayad

+0

et je ne peux pas changer ma requête – Mouayad

+0

alors comment puis-je afficher mon listview correctement ??? – Mouayad

0

-t-il doivent être formatés à partir de la base de données? C# et WPF fournissent tous deux de nombreuses options de format de date intégrées. Par exemple, consultez la propriété ContentStringFormat sur un libellé.

Si vous devez le faire dans la base de données, voici une bidouillage qui fonctionnera

Il formate la date comme une chaîne en utilisant une horloge de 12 heures, puis supprime la partie date de celui-ci

select right(convert(varchar, cast('1/1/2010 23:59:59' as datetime), 100), 
charindex(' ', reverse(convert(varchar, cast('1/1/2010 23:59:59' as datetime), 100)))-1) 
Questions connexes