powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / DateTime при INSERT INTO
9 сообщений из 9, страница 1 из 1
DateTime при INSERT INTO
    #32035666
Antoniy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите пожалуйста решить проблему. Мне нужно хранить в поле типа DateTime только дату (время 00:00:00.000).

DECLARE @data_d DATETIME
SET @data_d = getdate() --convert(datetime,convert(char(10),getdate(),101))

UPDATE SPR_DOK SET N_DATE = @data_d WHERE TIP=82

До этого момента всё работает верно, но при выполнении оператора
INSERT INTO NARAD (NOM_NAR, DATA_D)
(SELECT NOM_NAR, @data_d
FROM ROUTE_CARD
Дата вносится с поменявшимеся местами числом и месяцем. Отдельно SELECT возвращает всё правильно. SET DATEFORMAT здесь влияния не имеет. Подскажите, в чём здесь фокус?
...
Рейтинг: 0 / 0
DateTime при INSERT INTO
    #32035669
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
УЖЪ СКОЛЬКО РАЗЪ ТВЂРДИЛИ МIРУ...

Код: plaintext
SET @data_d = convert(char( 8 ),getdate(), 112 ) 
...
Рейтинг: 0 / 0
DateTime при INSERT INTO
    #32035670
Robert Djabarov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
For time only use Convert(varchar(25), getdate(), 114)
...
Рейтинг: 0 / 0
DateTime при INSERT INTO
    #32035674
Antoniy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я извиняюсь, забыл убрать отладочный кусок. Вот исправленная строка.
SET @data_d = convert(datetime,convert(char(10),getdate(),101))

Конвертация проходит правильно. @data_d получился уже в формате DateTime, апдейт происходит в верном формате. Так почему же при инсёрте происходит "переворот"?!
...
Рейтинг: 0 / 0
DateTime при INSERT INTO
    #32035680
Фотография Слон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все очень просто. Когда конвертируешь в varchar - происходит создание строки в формате европейском или американском, или еще в бог знает каком формате. Например в США принято писать даты в формате mm/dd/yyyy, а в Европе - в формате dd/mm/yyyy. Тут начинаются заморочки с COLLATIONS. Месяц может быть перепутан с днем и, соответственно, наоборот. Поэтому правильным путем вычисления даты будет следующий:
Код: plaintext
1.
2.
3.
4.
5.
6.
DECLARE 
     @Date smalldatetime,
     @InputDate smalldatetime

SET @InputDate = getdate()

SET @Date = CONVERT(smalldatetime, FLOOR(CONVERT(@InputDate, float)))


-- Слон
...
Рейтинг: 0 / 0
DateTime при INSERT INTO
    #32035687
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я то же кой-чего забыл.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
DECLARE @data_d char( 8 )

SET @data_d = convert(char( 8 ),getdate(), 112 ) 

UPDATE SPR_DOK SET N_DATE = @data_d WHERE TIP= 82  

INSERT INTO NARAD (NOM_NAR, DATA_D) 
(SELECT NOM_NAR, @data_d 
FROM ROUTE_CARD 
...
Рейтинг: 0 / 0
DateTime при INSERT INTO
    #32035734
Antoniy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо! Оба варианта работают.
Одна поправочка к Слону:
SET @Date = CONVERT(smalldatetime, FLOOR(CONVERT(@InputDate, float))) -- перепутаны местами параметры в CONVERT.

Но всё-таки не понятно почему я видел через PRINT, что @data_d сформировался верно, а дальше при вставке данных формат менялся?

Ещё раз всем спасибо!
...
Рейтинг: 0 / 0
DateTime при INSERT INTO
    #32035796
altmenn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>Но всё-таки не понятно почему я видел через PRINT, что >@data_d сформировался верно, а дальше при вставке >данных формат менялся?

а в системе как стоит?
...
Рейтинг: 0 / 0
DateTime при INSERT INTO
    #32035801
Antoniy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
To altmenn:
И на сервере и на моей машине формат даты dd.mm.yyyy
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / DateTime при INSERT INTO
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]