2016-11-10 7 views
0

У меня есть дата и время внутри моего стола. Интересно, есть ли способ вернуть дату, дату и время. Мне удается получить дату и счет со следующим запросом.Return HH: mm в SQL Server

SELECT 
date as dateRow, 
COUNT(date) as dateCount 
FROM DBName..tblName 
GROUP BY date 

Значение времени в моей таблице HH:mm:ss, но я хотел вернуться только HH:mm.

результат Пример ожидания

dateRow   |   dateCount   |   timeRow
2016-11-10           11:35
2016-11-11               11:40

Если я add CONVERT(VARCHAR(5),getdate(),108) AS timeRow Это возвращаемое значение как ожидаемый результат BUT запрос f или захват текущего времени. Я хотел показать время из своего стола.

EDIT:

Я имел TWO разные ОТДЕЛЕНА колонки для date и time внутри моего стола. дата столбец с date тип данных. время столбец с time тип данных.

Мой вопрос: Как вернуть значение даты, кол даты и время в SQL?

+0

Просто замените getdate() своим именем столбца? – ThatChris

+0

Возможный дубликат [HH: MM Format в SQL Server] (http://stackoverflow.com/questions/11167903/hhmm-format-in-sql-server) – jelliaes

+0

Использовать 'LEFT (timeRow, 5)' –

ответ

0

Если вы хотите, чтобы получить время из текущего системного времени. Использование запроса ниже,

SELECT LEFT(CONVERT (TIME, SYSDATETIME()),5); 

Если столбец TIME уже присутствует в вашей таблице использование запроса ниже.

SELECT LEFT(TIMECOLUMN,5); 

Надеюсь, это поможет!

+0

Работайте отлично! Спасибо. – Emerald

0

В зависимости от вашего SQL версии вы можете использовать команду FORMAT:

FORMAT(cast(date as datetime),'HH:mm') as dTime 
+0

Я использую SQL-сервер 2012 – Emerald

+0

Ключевое слово FORMAT доступно с 2012 года, поэтому вышеупомянутое решение будет работать – ThatChris

+0

Я попробовал запрос, и он вернул 'HH: mm' как' 00: 00' – Emerald

1

Попробуйте (Предположим, что @TIMESPAN в качестве Time столбца Тип данных)

Работа для меня

DECLARE @TIMESPAN TIME='12:56:23.9530000' 
    SELECT CONVERT(VARCHAR(5),CAST(@TIMESPAN AS DATETIME),108) 

Результат будет в ЧЧ: ММ

12:56 

Еще один простой способ (с функцией формальной CAST

SELECT CAST(CAST(@TIMESPAN AS smalldatetime) AS TIME))

Результат:

12:56:00.0000000 
+0

Это работает, если я присваиваю значение 'DECLARE @TIMESPAN TIME = '12: 56: 23.9530000''. Как я собираюсь вернуть время, хранящееся в моей таблице? – Emerald

+0

Просто замените TIMESPAN на фактическую колонку таблицы. Я использовал переменную TIMESPAN для проверки себя. @Emerald –

+0

Таким образом, запрос должен быть 'CONVERT (VARCHAR (5), CAST (date AS DATETIME), 108)', но он вернул мое время как '00: 00' – Emerald

0

Попробуйте это, если вы изменили свой тип данных в дату:

SELECT 
date as dateRow, 
COUNT(date) as dateCount, 
SUBSTRING(convert(varchar, date,108),1,5) as timeRow 
FROM DBName..tblName 
GROUP BY date, SUBSTRING(convert(varchar, date,108),1,5) 

ИЛИ попробуйте, если вы не будете cha Нге ваш тип данных для DATETIME

SELECT 
DateOfLoan as dateRow, 
COUNT(date) as dateCount, 
SUBSTRING(Convert(varchar, convert(datetime, date), 108),1,5) as timeRow, 
convert(datetime, date) 
FROM loan 
GROUP BY date, SUBSTRING(Convert(varchar, convert(datetime, date), 108),1,5) 

но это вернет 00:00, так как вы тип данных дата

+0

Все еще получайте то же самое ** Ошибка преобразования даты типа данных в varchar ** – Emerald

+0

Каков тип данных вашей колонки «date»? Я пробовал его здесь, и все работает отлично. Введите дату с квадратными скобками, так как дата является зарезервированным словом. – jelliaes

+0

Я использую тип даты 'date' для моей ** даты **. – Emerald

Смежные вопросы