|
|
|
Conversion failed when converting date and/or time from character string. При update.
|
|||
|---|---|---|---|
|
#18+
Добрый день. Надо проапдейтить одну таблицу Table1 по условиям из другой таблицы-справочника ParamsTable. В ParamsTable свалка из всяких разных значений разных типов(по логике разных) хранящихся в одном varchar поле param_value Идентификация типа параметров в справочнике идет по полю PType. В поле param_value нужного мне типа содержится дата в виде '31/12/2017' остальные значения ненужных мне типов содержат все что угодно, т.е. convert(datetime, param_value, 103) выдаст ошибку. В итоге такой апдейт Код: sql 1. 2. 3. 4. 5. 6. выдаст ошибку Conversion failed when converting date and/or time from character string. Вопрос: почему, и как этого избежать? В таблице ParamsTable значение поля param_value при условии PType in (1,2,3) заведомо рабочие, и если вывести все значения нужных типов с преобразованием select convert(datetime, p.param_value, 103) from ParamsTable p where p.tid=t.tid and p.PType in (1,2,3) то ошибок не будет. По идее условие в where должно отрабатывать уже после join и мусорных записей другого типа туда не должно попасть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2017, 15:05:17 |
|
||
|
Conversion failed when converting date and/or time from character string. При update.
|
|||
|---|---|---|---|
|
#18+
СферическийКуб, авторПо идее условие в where должно отрабатывать уже после join и мусорных записей другого типа туда не должно попасть. по чьей идее? TRY_CONVERT/TRY_CAST ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2017, 15:09:40 |
|
||
|
Conversion failed when converting date and/or time from character string. При update.
|
|||
|---|---|---|---|
|
#18+
СферическийКубПо идее условие в where должно отрабатывать уже после join и мусорных записей другого типа туда не должно попасть.Совершенно не обязательно. Смотрите план выполнения - там видно в какой момент вычисляется ваш convert. Исправление "в лоб" Код: sql 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2017, 15:13:14 |
|
||
|
Conversion failed when converting date and/or time from character string. При update.
|
|||
|---|---|---|---|
|
#18+
это по вашей идее так, сервер же решил сперва конвертировать. --- сделайте выборку с нужным условием и без попытки конвертации во временную таблицу. уже из нее берите и конвертируйте ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2017, 15:13:37 |
|
||
|
Conversion failed when converting date and/or time from character string. При update.
|
|||
|---|---|---|---|
|
#18+
СферическийКубПо идее условие в where должно отрабатывать уже после join и мусорных записей другого типа туда не должно попастьЭто по вашей идее. А сервер делает вычисления в том порядке, который ему нравится. Обычный выход из такой ситуации - проверять конвертируемость в CASE. Другая возможность - если версия сервера SQL2012, то использовать TRY_CONVERT() Код: sql 1. 2. 3. 4. 5. Конечно, некоторые "неправильные" даты удовлетворят этому условию... Но можно усложнять и дорабатывать, а основную массу "правильных" дат отфильтрует без ошибок. В общем, вы сами себе устроили этот праздник. Ведь можно же было хранить в строке дату в виде 'YYYYMMDD hh:mm:ss.nnn' или 'YYYY-MM-DDThh:mm:ss.nnn' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2017, 15:22:50 |
|
||
|
Conversion failed when converting date and/or time from character string. При update.
|
|||
|---|---|---|---|
|
#18+
iapВедь можно же было хранить в строке дату в виде 'YYYYMMDD hh:mm:ss.nnn' или 'YYYY-MM-DDThh:mm:ss.nnn'Хотя, нет. Вам бы это не помогло. В поле-то хранятся не только даты... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2017, 15:24:51 |
|
||
|
Conversion failed when converting date and/or time from character string. При update.
|
|||
|---|---|---|---|
|
#18+
Всем спасибо. Архитектура базы не моя, я только костыли подставляю. Сервер 2008R2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2017, 15:27:27 |
|
||
|
|

start [/forum/search_topic.php?author=T.Serg&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
34ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 656ms |
| total: | 807ms |

| 0 / 0 |
