Comment obtenir l'heure au format DateTime en SQL?

182

Je souhaite obtenir uniquement l'heure de la colonne DateTime à l'aide d'une requête SQL à l'aide de la sortie par défaut de SQL Server 2005 et 2008:

AttDate                   
==
2011-02-09 13:09:00    
2011-02-09 14:10:00    

J'aimerais cette sortie:

AttDate                Time 
==
2011-02-09 13:09:00    13:09
2011-02-09 14:10:00    14:10
Gabarit12
la source
recherchez la méthode to_char dans sql. vous pouvez spécifier le format et obtenir la sortie souhaitée
Naveen Babu
1
sélectionnez convertir (varchar (10), getdate (), 108)
rahularyansharma
Cela pourrait être SELECT CONVERT(VARCHAR(8),GETDATE(),108)pour le serveur SQL
V4Vendetta

Réponses:

342

SQL Server 2008:

SELECT cast(AttDate as time) [time]
FROM yourtable

Versions précédentes:

SELECT convert(char(5), AttDate, 108) [time]
FROM yourtable
t-clausen.dk
la source
34

En supposant un serveur SQL

SELECT CONVERT(VARCHAR(8),GETDATE(),108)

V4Vendetta
la source
Cela ne fonctionne que sur getdate () où, lorsque je passe select convert (varchar (8), '2011-02-09 13: 09: 00', 108), il produit les 8 premiers caractères de la date. ?
Aparna
24

SQL Server 2008+ a un type de données «time»

SELECT 
    ..., CAST(MyDateTimeCol AS time)
FROM
   ...

Pour les anciennes versions, sans conversions varchar

SELECT 
    ..., DATEADD(dd, DATEDIFF(dd, MyDateTimeCol, 0), MyDateTimeCol)
FROM
   ...
gbn
la source
pourquoi vous n'utilisez pas ce SELECT CONVERT (VARCHAR (8), GETDATE (), 108) AS HourMinuteSecond, CONVERT (VARCHAR (8), GETDATE (), 101) AS DateOnly y a-t-il un problème de performances?
rahularyansharma
2
@rahularyansharma: Je n'utilise pas la conversion varchar pour les dates si nécessaire
gbn
Monsieur, je veux savoir s'il y a une diminution des performances si nous utilisons cela à la place de votre solution?
rahularyansharma
1
@rahularyansharma: vous pouvez vous tester sur la base de ce stackoverflow.com/questions/133081/…
gbn
1
Pour toute personne qui ne suit pas, 0représente la date min 1900-01-01. Ainsi, cela obtient le nombre (négatif) de jours entre la valeur de la colonne et 0, puis ajoute ces jours négatifs à la valeur de la colonne qui "met à zéro" la partie de date 1900-01-01et il ne vous reste que l'heure.
xr280xr
13

Le moyen le plus simple d'obtenir l'heure de datetime sans pile de millisecondes est:

SELECT convert(time(0),getDate())
BigDaddy
la source
10

Essayez d'utiliser ceci

  • Date à heure

    select cast(getdate() as time(0))
  • Temps pour TinyTime

    select cast(orig_time as time(0))
Cantarero
la source
5

Essaye ça:

select  convert(nvarchar,CAST(getdate()as time),100)
Balaji N
la source
5

Essayez ceci, cela fonctionnera:

CONVERT(VARCHAR(8),DATETIME,114)

Pour votre référence .

user8498521
la source
3

select AttDate,convert(char(5), AttDate, 108) [Time] from yourTableName

Sagar Shah
la source
3
select cast (as time(0))

serait une bonne clause. Par exemple:

(select cast(start_date as time(0))) AS 'START TIME'
Metin Özsoy
la source
3

J'utilise souvent ce script pour obtenir l'heure de DateTime:

SELECT CONVERT(VARCHAR(9),RIGHT(YOURCOLUMN_DATETIME,9),108) FROM YOURTABLE
ChinoNoypi
la source
pourquoi dois-je obtenir 9 devant le temps .. Résultat: 9 23:21
Sayed Muhammad Idrees
2

Pour obtenir l'heure de datetime, nous pouvons utiliser

SELECT CONVERT(VARCHAR(20), GETDATE(), 114)
le van
la source
2

Si vous voulez sortir avec quelque chose dans ce style: 23 octobre 2013 10h30

Utilisez ceci

SELECT CONVERT(NVARCHAR(30),getdate(), 100)

convert() la méthode prend 3 paramètres

  1. Type de données
  2. Colonne / Valeur
  3. Style: Les styles disponibles vont de 100 à 114. Vous pouvez choisir dans la plage de. Choisissez un par un pour changer le format de la date.
Arif Ansari
la source
2

Obtenir la date du serveur

SELECT LTRIM(RIGHT(CONVERT(VARCHAR(20), GETDATE(), 100), 7)) FROM TABLENAME WHERE ...

ou

S'il est stocké dans la table

SELECT LTRIM(RIGHT(CONVERT(VARCHAR(20), datename, 100), 7)) FROM TABLENAME WHERE ...

Résultat:

11 h 41

Luis Gerardo López Salazar
la source
1
select convert(char(5), tbl_CustomerBooking.CheckInTime, 108) AS [time]
from tbl_CustomerBooking
JIYAUL MUSTAPHA
la source
1

sur MSSQL2012 ou supérieur

cast(dateadd(ms,datediff(ms, [StartDateTime], [StopDateTime]),0) as Time(0))

...ou...

convert(time(0),dateadd(ms,datediff(ms, [StartDateTime], [StopDateTime]),0) )
aVB.NetCoder
la source
1

SQL Server 2012:

Select TRY_CONVERT(TIME, myDateTimeColumn) from myTable;

Personnellement, je préfère TRY_CONVERT () à CONVERT (). La principale différence: si la conversion échoue, TRY_CONVERT () renvoie NULL tandis que CONVERT () génère une erreur.

Jinhr
la source
-1

select substr(to_char(colUmn_name, 'DD/MM/RRRR HH:MM:SS'),11,19) from table_name;

Sortie: de

05:11:26
05:11:24
05:11:24
user7131338
la source
Ne fonctionne pas donne une erreur'to_char' is not a recognized built-in function name.
captainsac