Преобразуйте строчку в datetime, как ячейка формата Excel, в t-sql - PullRequest
1 голос
/ 21 марта 2019

У меня есть данные END_Date, такие как 43830.99931. Когда я вставляю его в Excel и форматирую ячейку в Date. Это преобразовать это в 31.12.2009 23:59:00. Я хочу такую ​​же функциональность в T-SQL. Как я могу достичь того же результата, используя T-SQL?

1 Ответ

1 голос
/ 21 марта 2019

Excel (по умолчанию) использует систему дат 1900 года.Это просто означает, что дата 1 января 1900 года имеет истинное числовое значение 1, 2 января 1900 года имеет значение 2 и т. Д. Эти значения называются «последовательными значениями» в Excel, и именно эти последовательные значения позволяют нам использовать даты врасчеты.

Код для преобразования:

DECLARE @SerialDate FLOAT;
SET @SerialDate = 43830.99931;
SELECT CAST(@SerialDate - 2 AS DATETIME);

возврат значения даты и времени:

2019-12-31 23:59:00.383

Возможно, вы заметили -2 в приведении,Это потому, что Excel, из-за проблем с 29 февраля 1900 года и инклюзивности дат начала / окончания.(1900-01-01 - это день 1, а не день 0, а 1900 не был високосным годом, но Excel рассчитывает его неверно). Мы должны вычесть 2. Подробности по этому вопросу можно найти здесь .

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