Вопрос по sql-server-2005, sql, time, tsql – Как получить часть времени из SQL Server 2005 datetime в формате «ЧЧ: мм тт»

18

Как получить часть времени из SQL Server 2005 datetime вHH:mm tt формат

Например.

11:25 AM
14:36 PM
Похоже, что-то, что будет легче сделать в коде приложения. Oded
почему вам нужен AM / PM в формате ЧЧ: мм? hallie

Ваш Ответ

9   ответов
2

SQL Server 2008

SELECT
CONVERT(TIME,GETDATE()) AS HourMinuteSecond,
CONVERT(DATE,GETDATE(),101) AS DateOnly
GO

Результат:

HourMinuteSecond: 13:06:56.5770000
DateOnly:         2012-07-26

SQL Server 2000/2005

SELECT
CONVERT(VARCHAR(8),GETDATE(),108) AS HourMinuteSecond,
CONVERT(VARCHAR(8),GETDATE(),101) AS DateOnly
GO
1

а не varchar

CAST(LEFT(YOURDATETIME,12) AS SMALLDATETIME) AS YOURNEWDATE
7

SQL Server 2008

CONVERT(TIME,GETDATE()) AS HourMinuteSecond,
CONVERT(DATE,GETDATE(),101) AS DateOnly
GO

Результат

HourMinuteSecond: 13:06:56.5770000
DateOnly:         2012-07-26

SQL Server 2000/2005


CONVERT(VARCHAR(8),GETDATE(),108) AS HourMinuteSecond,
CONVERT(VARCHAR(8),GETDATE(),101) AS DateOnly
GO

http://blog.sqlauthority.com/2009/08/06/sql-server-get-time-in-hourminute-format-from-a-datetime-get-date-part-only-from-datetime/

1
select cast(getdate() as time)) [time],
SQL Sevrer 2005 не поддерживаетTime типа, так что этот ответ является полностью ложным. Tedo G.
Ответ неполный. Редактирование еще интереснее! SoftDev
1

Вам нужно использоватьCONVERT функция:

CONVERT(VARCHAR, yourdatetimefiled, 114) AS [HH:MI(12H)]
Согласно MSDN, 114 =hh:mi:ss:mmm(24h). Oded
но я хочу в формате ЧЧ: мм тт, и он не предоставляет информацию тт, как AM или PM Azhar
Я написал ответ наизусть, так как на данный момент у меня нет доступа к MSSQL. Я считаю, что AdaTheDev понял это правильно. Anax
26

SELECT LTRIM(RIGHT(CONVERT(VARCHAR(20), GETDATE(), 100), 7))

Если вы посмотрите наКниги онлайн здесьформат 100 - это элемент, в котором есть элемент времени в том формате, в котором вы его хотите, это просто случай удаления даты с фронта.

Это напечатает 8:00 вечера, но я думаю, что вопрос ищет 20:00 вечера Andomar
@ Андомар - хорошая мысль. Если это действительно то, что нужно, я бы сказал, что AM / PM не имеет значения и предложил бы более краткий подход, хотя AdaTheDev
9

мм время, а другой, чтобы получить AM / PM. Например:

declare @date datetime
set @date = '20:01'
SELECT CONVERT(VARCHAR(5), @date, 108) + ' ' +
       SUBSTRING(CONVERT(VARCHAR(19), @date, 100),18,2)

Это печатает:

20:01 PM

В запросе на выбор замените @date именем вашего столбца.

Я бы заменил SubString () и Convert () с одним DatePart () и Case-Statement. Это также даст вам больший контроль над регистром / капитализацией вашего AM / PM. Т.е. (В случае, когда DATEPART (HOUR, GETDATE ()) <12 THEN 'am' ELSE 'pm' END) Вы также можете включить пробел в 'am' и 'pm', чтобы у вас также было меньше конкатенации. MikeTeeVee
2
select substring(CONVERT(VARCHAR, getdate(), 114),1,5)

0
select right(convert(char(20),getdate(),0),7)

Похожие вопросы