|
|
|
DateTime при INSERT INTO
|
|||
|---|---|---|---|
|
#18+
Помогите пожалуйста решить проблему. Мне нужно хранить в поле типа 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 здесь влияния не имеет. Подскажите, в чём здесь фокус? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2002, 21:31:38 |
|
||
|
DateTime при INSERT INTO
|
|||
|---|---|---|---|
|
#18+
УЖЪ СКОЛЬКО РАЗЪ ТВЂРДИЛИ МIРУ... Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2002, 22:23:46 |
|
||
|
DateTime при INSERT INTO
|
|||
|---|---|---|---|
|
#18+
For time only use Convert(varchar(25), getdate(), 114) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2002, 23:25:12 |
|
||
|
DateTime при INSERT INTO
|
|||
|---|---|---|---|
|
#18+
Я извиняюсь, забыл убрать отладочный кусок. Вот исправленная строка. SET @data_d = convert(datetime,convert(char(10),getdate(),101)) Конвертация проходит правильно. @data_d получился уже в формате DateTime, апдейт происходит в верном формате. Так почему же при инсёрте происходит "переворот"?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2002, 23:58:22 |
|
||
|
DateTime при INSERT INTO
|
|||
|---|---|---|---|
|
#18+
Все очень просто. Когда конвертируешь в varchar - происходит создание строки в формате европейском или американском, или еще в бог знает каком формате. Например в США принято писать даты в формате mm/dd/yyyy, а в Европе - в формате dd/mm/yyyy. Тут начинаются заморочки с COLLATIONS. Месяц может быть перепутан с днем и, соответственно, наоборот. Поэтому правильным путем вычисления даты будет следующий: Код: plaintext 1. 2. 3. 4. 5. 6. -- Слон ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2002, 03:41:07 |
|
||
|
DateTime при INSERT INTO
|
|||
|---|---|---|---|
|
#18+
Я то же кой-чего забыл. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2002, 07:14:47 |
|
||
|
DateTime при INSERT INTO
|
|||
|---|---|---|---|
|
#18+
Спасибо! Оба варианта работают. Одна поправочка к Слону: SET @Date = CONVERT(smalldatetime, FLOOR(CONVERT(@InputDate, float))) -- перепутаны местами параметры в CONVERT. Но всё-таки не понятно почему я видел через PRINT, что @data_d сформировался верно, а дальше при вставке данных формат менялся? Ещё раз всем спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2002, 11:32:20 |
|
||
|
DateTime при INSERT INTO
|
|||
|---|---|---|---|
|
#18+
>Но всё-таки не понятно почему я видел через PRINT, что >@data_d сформировался верно, а дальше при вставке >данных формат менялся? а в системе как стоит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2002, 14:21:42 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32035687&tid=1821916]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
69ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
| others: | 230ms |
| total: | 397ms |

| 0 / 0 |
