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

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

34

En supposant un serveur SQL

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


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
   ...

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())

10

Essayez d'utiliser ceci

  • Date à heure

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

    select cast(orig_time as time(0))

5

Essaye ça:

select  convert(nvarchar,CAST(getdate()as time),100)


3

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


3
select cast (as time(0))

serait une bonne clause. Par exemple:

(select cast(start_date as time(0))) AS 'START TIME'

3

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

SELECT CONVERT(VARCHAR(9),RIGHT(YOURCOLUMN_DATETIME,9),108) FROM YOURTABLE

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)

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.

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


1
select convert(char(5), tbl_CustomerBooking.CheckInTime, 108) AS [time]
from tbl_CustomerBooking

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) )

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.


-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

Ne fonctionne pas donne une erreur'to_char' is not a recognized built-in function name.
captainsac
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.