2017-10-11 3 views
0

J'ai une colonne time dans une table SQL Server 2008. Je veux sélectionner seulement hh:mm et supprimer (secondes) partie ss. En plus de cela, je veux retourner l'heure en tant que type de données et je ne veux pas convertir en varchar.Sélectionnez uniquement la partie hh: mm de la colonne de date dans SQL Server 2008

Y at-il un moyen?

+0

Quelle base de données utilisez-vous? Qu'avez-vous essayé jusqu'ici? Est-ce que hh: mm: ss est stocké dans une chaîne? – saitejalakkimsetty

+0

Copie possible de [Comment obtenir l'heure et la minute seulement à partir d'un DateTime] (https://stackoverflow.com/questions/27979307/how-to-get-hour-and-minute-only-from-a-datetime) –

+0

base de données: sql 2008, j'ai essayé de convertir en varchar, mais front end utilise timespan, donc il jette une erreur. J'ai besoin de datatype de temps, mais avec seulement HH: MM – dinesh

Répondre

0

Vous pouvez utiliser datepart fonction intégrée (je l'ai cheked et est disponible dans SQL 2008)

SELECT cast(DATEPART(hour, MyDateColumn) as varchar) + ':' + cast(DATEPART(minute, MyDateColumn) as varchar) from MyTeable 

J'espère que cela aide,

Juan

EDIT: Si waht vous avez besoin est une valeur de temps, vous pouvez le convertir comme:

SELECT CONVERT(TIME, 
     cast(DATEPART(hour, MyDateColumn) as varchar) 
     + ':' 
     + cast(DATEPART(minute, MyDateColumn) as varchar) 
     ) 
from MyTable 
+0

thx jaun, mais je ne veux pas convertir en varchar, comme frontal utilise timespan, qui jette l'erreur, et je ne veux pas changer front end – dinesh

+0

Voilà une autre problème, donnant appart que vous ne devriez pas accéder directement à partir couche frontale à Data Access Layer ... Il n'est pas possible dans votre code de lancer à nouveau à une période de temps? (Je vais chercher un autre casting pour retourner une durée, je vais modifier ma réponse en 3 minutes) – Juan

+0

la réponse ci-dessus j'ai essayé, mais quand nous convertissons à temps, il renvoie la valeur comme: 09: 00: 00.0000000, ce qui n'est pas ce dont nous avons besoin – dinesh

0

Vous pouvez utiliser,

CONVERT(DATETIME, CONVERT(VARCHAR(5),table.time,108), ,table.time) AS [Time]

0

converti en varchar et 108 est utilisé pour obtenir les hh: mm: ss mais en utilisant varchar (5) obtenir HH: MM puis convertir en temps

SELECT convert(time,CONVERT(VARCHAR(5),getdate(),108)) 
+0

Ronak, quand nous essayons à nouveau de convertir à temps, il va convertir en hh: mm: ss – dinesh

+0

en cours d'exécution de la requête ci-dessus renvoie 09: 00: 00.0000000 – dinesh