Дата и время MS SQL до 01.01.1900

Конечно, есть способ сохранить значение даты до 1-1-1900 в столбце, отличном от varchar? Или мне действительно нужно вырвать это и создать свою собственную библиотеку datetime для различий дат, сортировки и т. д.?

Да, я понимаю, как на самом деле хранятся datetime (целочисленное значение с определенной даты), но я помню, что много лет назад был еще один обходной путь. Теперь это просто ускользает от меня.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
4
0
12 992
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

smalldatetime против datetime!

http://msdn.microsoft.com/en-us/library/ms187819.aspx

http://msdn.microsoft.com/en-us/library/ms182418.aspx

!

Спасибо, да, я сказал разработчику внести это изменение, и у них все еще была та же проблема. Затем, когда я увидел статью о msdn, я попросил их обновить соединение и повторить попытку, конечно же, на этот раз сработало datetime. (Или они не применили изменения изначально).

Adam 09.10.2008 21:12

Да, тип DateTime SQL Server может хранить даты с 1 января 1753 года.

С оговоркой, что вы ошиблись, если хотите создать (например) приложение для генеалогии, чтобы записать кого-то, родившегося в 1536 году.

ConcernedOfTunbridgeWells 09.10.2008 21:20

Чтобы получить больший диапазон, вы можете сохранить целое число (соответствующего диапазона) в базе данных и использовать что-то вроде «Unix time», чтобы интерпретировать его в своем коде.

JoelFan 23.08.2012 20:13

@JoelFan - да, вы можете хранить как целое число или строку - или использовать datetime2 в SQL Server 2008, который имеет больший диапазон. Но «время Unix» - плохой пример, поскольку оно представляет только даты> = 01.01.1970.

Joe 24.08.2012 13:20

@ Джо, неправда! Используя целые числа подписанный, вы можете представить любую дату во времени Unix ... отрицательное значение - до 01.01.1970

JoelFan 24.08.2012 18:40

@JoelFan, я думаю, что Джо имеет в виду толкование календарей и т. д. 1582 г. был введен григорианский календарь. До этого использовался юлианский календарь. Тогда это был беспорядок, и я подозреваю, что дата 1753 года может также представлять некоторую календарную реформу ... простое добавление или вычитание единиц времени не обязательно приведет к правильным датам в далеком прошлом.

Erk 25.01.2021 12:51

@erk, ну то, что он на самом деле сказал, что время Unix может представлять только даты> 01.01.1970. Это неверно, потому что он игнорирует тот факт, что значение может быть отрицательным для представления дат <01.01.1970. «Минимальная представимая дата - пятница 13 декабря 1901 года, а максимальная представимая дата - вторник 19 января 2038 года»

JoelFan 26.01.2021 07:50

@JoelFan, да, в 1901-12-13 ты был бы в безопасности от любых проблем с календарем. OP требует поддержки дат до 1900 года. Для этого вам нужно использовать bigint. У меня нет запущенного и работающего SQL-сервера, но оценка подсказывает мне, что вы можете вернуться к временам кроманьонцев ... и если вы предоставите функцию, вы можете быть уверены, что пользователь предоставит достаточно большой (достаточно маленький ?) value ... Вот почему время Unix здесь проблематично.

Erk 28.01.2021 02:25

@erk, 1753 как раз представлял собой более широкое распространение григорианского календаря (а именно его принятие Британской империей). Было несколько веков, когда использовались оба календаря. Изменение было очень медленным.

JoelFan 28.01.2021 05:28

SQL Server 2008 имеет тип данных DATE, который может находиться в диапазоне от 0001-01-01 до 9999-12-31.

В предыдущих версиях ваш SOL, если вам нужна дата до 1753-01-01 (минимальное значение для DATETIME).

Другие вопросы по теме