Я работаю (или исправляю ошибки) над приложением, разработанным в VS 2005 C #. Приложение сохраняет данные на SQL-сервере 2005. Один из операторов вставки SQL пытается вставить значение метки времени в поле с функцией TSQL GetDate () в качестве значения даты и времени.
Insert into table1 (field1, ... fieldDt) values ('value1', ... GetDate());
Причина использования функции GetDate () заключается в том, что сервер SQL может находиться на удаленном сайте, а дата и время могут находиться в разном часовом поясе. Поэтому GetDate () всегда будет получать дату с сервера. Поскольку эту функцию можно проверить в SQL Management Studio, я получаю следующее:
SELECT GetDate(), LEN(GetDate());
-- 2010-06-10 14:04:48.293 19
Одна вещь, которую я осознаю, состоит в том, что длина не равна миллисекундам, то есть 19 фактически соответствует «2010-06-10 14:04:48». В любом случае, проблема, с которой я столкнулся сейчас, заключается в том, что после вставки fieldDt фактически имеет значение даты и времени вплоть до минут, например, «2010-06-10 14:04:00». Я не уверен почему. У меня нет разрешения на обновление или изменение таблицы с помощью триггера для обновления поля.
Мой вопрос заключается в том, как я могу использовать INSERT T-SQL для добавления новой строки со значением даты и времени (локальное время сервера SQL) с точностью до миллисекунд?