Конвертировать дату в Великобританию для Excel - PullRequest
0 голосов
/ 24 августа 2018

Пожалуйста, помогите, это сводило меня с ума в течение нескольких месяцев.

Я запрашиваю данные из базы данных MS SQL, которая не очень хорошо сконструирована и имеет много проблем.Одна конкретная проблема, которая до сих пор ставила меня в тупик, - это представление даты в формате, понятном пользователям и распознаваемом Excel как дата (не текстовая)

Для начала, дата в этой БД хранится как 'ггггммдд варчар (8).Я хочу конвертировать в дд / мм / гггг (британский формат).Я добился этого, используя множество различных функций следующим образом ...

FORMAT(CAST(20180728 as date, 'dd/MM/yyyy')

CONVERT(date,20180728,120)

SUBSTRING(20180728,7,2) + '/' + SUBSTRING(20180728,5,2) + '/' + SUBSTRING(20180728,1,4)

Все они обеспечивают желаемый результат, но при просмотре в Excel они рассматриваются как текст, поэтому фильтрация по диапазону становится проблемой.

Затем я обнаружил следующую функцию, которая распознается Excel как дата, но не является удобным для пользователя отображением ...

CONVERT(smalldatetime, 20180728, 103)

Возвращает формат как 2018-07-28 00:00:00, несмотря на чтение на всех сайтах, которые я посетил, код 103 должен возвращаться в британском формате.

Я ценю, что, как только данные в Excel, их можно переформатировать, но я пытаюсь избежать этого и ввестипрямой переход в Excel без вмешательства пользователя.

Надеемся на отличный ответ

Ответы [ 2 ]

0 голосов
/ 24 августа 2018

Вы можете дважды конвертировать. Сначала преобразуйте в (small)datetime, который, как я уже сказал в комментариях, не имеет формат 1 , а затем преобразуйте его обратно в строку в нужном формате:

select CONVERT(varchar(10),
CONVERT(smalldatetime,'20180728',112) --This string is yyyymmdd
,103) --I want a string as dd/mm/yyyy

Однако я сомневаюсь, что результаты будут сильно отличаться, если Excel не будет удовлетворен другими вашими усилиями.


1 Внутренне тип smalldatetime состоит из двух 16-битных целых чисел (диапазон 0-65535). В одном из них хранится количество целых дней, прошедших с 1 января 1900 года. В другом хранится количество минут после полуночи. Проницательный заметит, что 5 битов потрачены на этот план, но это просто просто .

Признайте, что когда вы имеете дело с форматированием, вы почти всегда смотрите на преобразование между двумя типами данных, где один из этих типов данных является строкой. Строка не «имеет» формат - она ​​содержит результаты или символы, которые подразумеваются в match формате. И другой тип данных часто тоже не имеет формата. Сам процесс преобразования требует форматов.

Также признайте, что вы не часто просматриваете данные напрямую. Если вы, например, Запустите запрос в SQL Server Management Studio, вы не увидите data , вы увидите данные, обработанные SSMS, и один из неизбежных шагов, которые необходимо выполнить с любыми нестроковыми данными, это собирается отобразить это преобразовать его в строку. И преобразования, к которым он применяется, не находятся под вашим контролем, но, что важно, не сообщают вам, какие фактические данные равны .

0 голосов
/ 24 августа 2018

Изменить столбец в Excel для форматирования в качестве даты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...