web-dev-qa-db-fra.com

Convertir le TimeType de données en AM PM Format:

J'ai une table qui a deux champs tels que "StartTime" et "EndTime". Le DataType des deux colonnes est Time.

Ainsi, les valeurs de la table se présentent comme suit:

TableA:

            StartTime                EndTime
       ------------------         ----------------
        17:30:00.0000000          17:57:00.0000000

Mais j'ai besoin du résultat car 

            StartTime                EndTime
       ------------------         ----------------
            05:30 PM                 05:57 PM

Quand je sélectionne la table. Comment obtenir l'heure au format AM PM?

45
thevan

Utilisez la syntaxe suivante pour convertir une heure au format AM PM.

Remplacez le nom du champ par la valeur de la requête suivante.

select CONVERT(varchar(15),CAST('17:30:00.0000000' AS TIME),100)
56
Romil Kumar Jain

En SQL 2012, vous pouvez utiliser la fonction Format ().

https://technet.Microsoft.com/en-us/library/hh213505%28v=sql.110%29.aspx

Ignorer le transtypage si le type de colonne est (date/heure).

Exemple:

SELECT FORMAT(StartTime,'hh:mm tt') AS StartTime
FROM TableA
58
Dennis

Voici les différentes manières dont vous pouvez tirer cela (selon vos besoins).

Utilisation du Time DataType:

DECLARE @Time Time = '15:04:46.217'
SELECT --'3:04PM'
       CONVERT(VarChar(7), @Time, 0),

       --' 3:04PM' --Leading Space.
       RIGHT(' ' + CONVERT(VarChar(7), @Time, 0), 7),

       --' 3:04 PM' --Space before AM/PM.
       STUFF(RIGHT(' ' + CONVERT(VarChar(7), @Time, 0), 7), 6, 0, ' '),

       --'03:04 PM' --Leading Zero.  This answers the question above.
       STUFF(RIGHT('0' + CONVERT(VarChar(7), @Time, 0), 7), 6, 0, ' ')

       --'03:04 PM' --This only works in SQL Server 2012 and above.  :)
       ,FORMAT(CAST(@Time as DateTime), 'hh:mm tt')--Comment out for SS08 or less.

Utilisation du DateTime DataType:

DECLARE @Date DateTime = '2016-03-17 15:04:46.217'
SELECT --' 3:04PM' --No space before AM/PM.
       RIGHT(CONVERT(VarChar(19), @Date, 0), 7),

       --' 3:04 PM' --Space before AM/PM.
       STUFF(RIGHT(CONVERT(VarChar(19), @Date, 0), 7), 6, 0, ' '),

       --'3:04 PM' --No Leading Space.
       LTRIM(STUFF(RIGHT(CONVERT(VarChar(19), @Date, 0), 7), 6, 0, ' ')),

       --'03:04 PM' --Leading Zero.
       STUFF(REPLACE(RIGHT(CONVERT(VarChar(19), @Date, 0), 7), ' ', '0'), 6, 0, ' ')

       --'03:04 PM' --This only works in SQL Server 2012 and above.  :)
       ,FORMAT(@Date, 'hh:mm tt')--Comment line out for SS08 or less.
11
MikeTeeVee
SELECT CONVERT(varchar, StartTime, 100) AS ST,
       CONVERT(varchar, EndTime, 100) AS ET
FROM some_table

ou

SELECT RIGHT('0'+ LTRIM(RIGHT(CONVERT(varchar, StartTime, 100),8)),8) AS ST,
       RIGHT('0'+ LTRIM(RIGHT(CONVERT(varchar, EndTime, 100),8)),8) AS ET
FROM some_table
4
Darshana
select case 
      when DATEPART(hour,'17:30:00.0000000') > 12 
      then cast((DATEPART(hour,'17:30:00.0000000') - 12) as varCHAR(2)) + ':' + cast(DATEPART(minute,'17:30:00.0000000') as varCHAR(2)) + ' PM'
      else cast(DATEPART(hour,'17:30:00.0000000') as varCHAR(2)) + ':' + cast(DATEPART(minute,'17:30:00.0000000') as varCHAR(2)) + ' PM'
   end
2
juergen d

Cela revient comme 11h30

select CONVERT(VARCHAR(5), FromTime, 108) + ' ' + RIGHT(CONVERT(VARCHAR(30), FromTime, 9),2)
from tablename
2
jejendran
> SELECT CONVERT(VARCHAR(30), GETDATE(), 100) as date_n_time
> SELECT CONVERT(VARCHAR(20),convert(time,GETDATE()),100) as req_time
> select convert(varchar(20),GETDATE(),103)+' '+convert(varchar(20),convert(time,getdate()),100)

> Result (1):- Jun  9 2018 11:36AM
> result(2):-  11:35AM
> Result (3):-  06/10/2018 11:22AM
2
Saikh Rakif

Essaye ça:

select CONVERT(VARCHAR(5), ' 4:07PM', 108) + ' ' + RIGHT(CONVERT(VARCHAR(30), ' 4:07PM', 9),2) as ConvertedTime
1
user3851829
    select right(convert(varchar(20),getdate(),100),7)
0
SayanKrSwar

Essaye ça:

select CONVERT(varchar(15),CAST('2014-05-28 16:07:54.647' AS TIME),100) as CreatedTime
0
user3851829

En utilisant la réponse de @ Saikh ci-dessus, la 2e option, vous pouvez ajouter un espace entre l'heure et l'heure AM ou PM.

REVERSE(LEFT(REVERSE(CONVERT(VARCHAR(20),CONVERT(TIME,myDateTime),100)),2) + ' ' + SUBSTRING(REVERSE(CONVERT(VARCHAR(20),CONVERT(TIME,myDateTime),100)),3,20)) AS [Time],

En désordre je sais, mais c'est la solution que j'ai choisie. Étrange que CONVERT () n'ajoute pas cet espace automatiquement. SQL Server 2008 R2

0
Fandango68