Дата преобразования SQL хранится в формате varchar в формате Excel (числовой) - PullRequest
0 голосов
/ 24 апреля 2019

Я использовал BCP для импорта данных из Excel в базу данных. Это привело к тому, что даты в Excel стали цифрами в базе данных. Однако в базе данных уже было несколько записей в формате дд / мм / гггг и дд / мм / гггг чч: мм: сс. Мой пример данных ниже:

+---------------------+
|    PcptClassDate    |
+---------------------+
| 01/04/2018 00:00:00 |
| 02/04/2018 00:00:00 |
| 07/04/2018 00:00:00 |
| 28/09/2018          |
| 29/09/2018          |
| 30/03/2018 00:00:00 |
| 30/08/2018          |
| 31/03/2018 00:00:00 |
| 31/08/2018          |
| 43227               |
| 43232               |
| 43233               |
| 43239               |
+---------------------+

Я учел числовые даты в своем коде, преобразовав их следующим образом: DateTime.FromOADate(pcptClassDate) Следовательно, теперь я хочу преобразовать все даты в этом столбце в стандартный формат Excel (числовой). Есть ли запрос, который я могу использовать, чтобы сделать это, или мне нужно написать код для этого? Моя версия базы данных «Microsoft SQL Azure (окончательная первоначальная версия) - 12.0.2000.8 3 апреля 2019 13:27:00»

1 Ответ

2 голосов
/ 24 апреля 2019

Это кажется очень глупой вещью, однако, если вы действительно хотите отображать все свои даты в виде числового значения, используя нумерацию Excel, тогда вы можете сделать:

SELECT PcptClassDate,
       CASE WHEN TRY_CONVERT(int,PcptClassDate) IS NOT NULL THEN PcptClassDate
            ELSE DATEDIFF(DAY,'19000101',TRY_CONVERT(date,PcptClassDate,103)) + 2
       END AS ExcelDateNum
FROM (VALUES ('01/04/2018 00:00:00'),
             ('02/04/2018 00:00:00'),
             ('07/04/2018 00:00:00'),
             ('28/09/2018'),
             ('29/09/2018'),
             ('30/03/2018 00:00:00'),
             ('30/08/2018'),
             ('31/03/2018 00:00:00'),
             ('31/08/2018'),
             ('43227'),
             ('43232'),
             ('43233'),
             ('43239'))V(PcptClassDate);

Как я уже говорил в комментариях, это кажется очень плохой идеей; поскольку «дата» 43371 не имеет смысла для большинства человек.

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