У меня есть набор данных с 1 столбцом значений целочисленного числа в SQL (0, 1, 2, ..., 23). Есть ли способ конвертировать их в: 12:00, 1:00, 2:00, ..., 11:00 pm ??Преобразование целого числа (0,1,2 ..., 23) в час (AM/PM)
ответ
Это выражение должно работать:
CASE WHEN [Hour] = 0 THEN '12:00am'
WHEN [Hour] < 12 THEN CAST([Hour] AS VarChar) + ':00am'
WHEN [Hour] = 12 THEN '12:00pm'
ELSE CAST(([Hour]-12) AS VarChar) + ':00pm'
END AS [Time]
С SQL это всегда собирается быть «трудный путь». Вот один вариант (при условии, столбец с номером называется num
):
SELECT CAST(num AS VARCHAR) + ':00' +
CASE WHEN NUM < 12 THEN 'AM' ELSE 'PM' END Time
См live demo на SQLFiddle.
Действительно, действительно, действительно нужно форматировать это на клиенте. Это не совсем аккуратная работа для SQL Server, и я не понимаю цели ее выполнения в T-SQL.
DECLARE @t TABLE(i INT);
INSERT @t(i) VALUES(0),(1),(2), ... ,(23);
SELECT LOWER(RIGHT(CONVERT(CHAR(19),DATEADD(HOUR,i,0),0),7)) FROM @t ORDER BY i;
Результаты:
12:00am
1:00am
2:00am
...
11:00pm
Полностью согласовано. Просто нужно быстрое решение :) – Ray
Возможно (возможно, слишком сложно):
SELECT Hour,
CASE WHEN Hour = 0 THEN '12:00AM'
ELSE CASE WHEN Hour = 12 THEN '12:00PM'
ELSE CASE WHEN Hour < 12
THEN CAST(Hour AS VARCHAR(7)) + ':00AM'
ELSE CAST(Hour - 12 AS VARCHAR(7)) + ':00PM'
END END END AS AM_PM
FROM dbo.Time
Вы можете добавить :00:00
к целому числу, и использовать CAST
для удобст к.т. его time
, как это:
SELECT CAST(CAST(int_val as VARCHAR(2))+':00:00' as time)
FROM my_table
При обновлении до SQL Server 2012, вы могли бы использовать TIMEFROMPARTS
функцию, чтобы сделать то же самое, без ненужных преобразований:
SELECT TIMEFROMPARTS(int_val, 0, 0, 0, 0)
FROM my_table
Это все еще не совсем то, что им нужно; выходной сигнал, например, '13: 00: 00.0000000'. –
@AaronBertrand Это дает OP значение типа «время», которое он может преобразовать в любое разумное представление по мере необходимости. – dasblinkenlight
- 1. Преобразование целого числа в даты
- 2. Преобразование целого числа во время
- 3. Преобразование целого числа в байты
- 4. Преобразование целого числа в строку
- 5. Преобразование целого числа в base36
- 6. Преобразование целого числа в байты
- 7. Преобразование целого числа в DateTime в Python
- 8. Преобразование целого числа кортежа в строку кортежа
- 9. MIPS Преобразование целого числа плавать
- 10. Преобразование целого числа в символ в Fortran90
- 11. Преобразование целого числа в Enum в PostgreSQL
- 12. Преобразование целого числа в двоичной в Python
- 13. Преобразование целого числа в байты в java
- 14. Преобразование целого числа в строку в C
- 15. Преобразование целого числа в строку в NASM
- 16. Преобразование целого числа в цвет в WPF
- 17. Преобразование целого числа в Date в node.js
- 18. Преобразование целого числа в NSData в Swift
- 19. Преобразование целого числа в Float в Elisp
- 20. Преобразование целого числа в его отрицательный
- 21. Преобразование целого числа в представление битов
- 22. Преобразование целого числа в список дней недели
- 23. Преобразование целого числа в ключ ASCII Строка
- 24. SQL Преобразование целого числа в DateTime
- 25. Преобразование целого числа в массив байтов
- 26. Преобразование целого числа в эквивалентное число пробелов
- 27. Преобразование целого числа в список слов
- 28. Преобразование целого числа в промежуток времени
- 29. Преобразование целого числа в символ int j2me
- 30. Преобразование целого числа в римскую цифру
CONCAT не существует в SQL Server 2008. –
@aaron Я признаюсь, что я никогда не использовал SQL Server - это правильно сейчас? – Bohemian
Нет, это приведет к недействительной операции (вы не можете добавить целое число и строку). Вы можете попробовать свои решения на http://sqlfiddle.com/, прежде чем публиковать их ... –