Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
 Re: Вопрос про NULL в обновляемом datetime поле  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
system1024,

какого типа поля с датами?
10 сен 14, 13:24    [16558934]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про NULL в обновляемом datetime поле  [new]
system1024
Member

Откуда:
Сообщений: 18
iap
system1024,

какого типа поля с датами?


Системный тип - datetime
10 сен 14, 13:29    [16558962]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про NULL в обновляемом datetime поле  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
system1024
делал резервную копию, а на новой машине восстанавливал
Восстановление из резервной копии не приводит к изменениям данных в таблицах.
Значит либо восстановились из другой копии, либо производили манипуляции с данными после восстановления.
10 сен 14, 13:30    [16558972]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про NULL в обновляемом datetime поле  [new]
o-o
Guest
может, там вообще вычисляемые поля not persisted.
исходная дата хранится строкой (на картинке какие-то даты тоже похожи на строки)
ну и опрос таблицы с разными параметрами сессии приведет к подобной бурде:

create table dbo.t (dt char(10), dt_f as case when datediff(day, dt, getdate()) < 12 then dt end);
insert into dbo.t(dt) values ('01-09-2014')

set language us_english
select *
from dbo.t 
---
dt	dt_f
01-09-2014	NULL

set language russian
select *
from dbo.t
---
dt	dt_f
01-09-2014	01-09-2014 


т.е. достаточно на одном сервере зайти под учеткой с инглишем как default language,
а на другом с русским, и пожалуйста, студия покажет по-разному
(здесь у меня у логина sa_rus дефолтный русский):

К сообщению приложен файл. Размер - 53Kb
10 сен 14, 13:34    [16559003]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про NULL в обновляемом datetime поле  [new]
o-o
Guest
фу, извините, уже уточнили тип данных столбцов, моя гипотеза неверна.
10 сен 14, 13:38    [16559032]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про NULL в обновляемом datetime поле  [new]
o-o
Guest
хотя знаете, я не верю в заявленный datetime.
в студии все под тем же русскоязычным логином открываю другую таблицу,
где поле действительно datetime.
студия отображает мне дату как всегда в формате ISO, простите, а не с точками в виде разделителей.
на картинке вопрошающего я вижу точки.

правда, не могу проверить, как редактор отобразит при смене рег. настроек на компе, но подозреваю,
что все равно точки не покажет
10 сен 14, 13:43    [16559086]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про NULL в обновляемом datetime поле  [new]
system1024
Member

Откуда:
Сообщений: 18
Вот так выглядело на предыдущей машине:

К сообщению приложен файл. Размер - 149Kb
10 сен 14, 13:56    [16559183]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про NULL в обновляемом datetime поле  [new]
o-o
Guest
system1024,

на предыдущей картинке таблица называлась Pay, а не Rasxod.
в Pay точно поля datetime?
но про точки ок, может, значит, студия даты с точками отображать.
на второй картинке студия буржуйская, ей верю больше. на первой русифицированная какая-то...
10 сен 14, 14:21    [16559346]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про NULL в обновляемом datetime поле  [new]
o-o
Guest
слушайте, а сделайте просто
select date_f 
from dbo.Pay

"12" явно намекает на перемену мест dd <-> yy в представлени даты,
какая-нибудь графическая заморочка 2005-ой студии...
10 сен 14, 14:34    [16559440]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про NULL в обновляемом datetime поле  [new]
system1024
Member

Откуда:
Сообщений: 18
o-o
system1024,

на предыдущей картинке таблица называлась Pay, а не Rasxod.
в Pay точно поля datetime?
но про точки ок, может, значит, студия даты с точками отображать.
на второй картинке студия буржуйская, ей верю больше. на первой русифицированная какая-то...


В обоих таблицах, как и в остальных, даты после переноса не отображаются, по этому неважно какая из них на скрине Pay или Rasxod - просто сделал скрин первой попавшейся таблицы, т.к. во всех такая проблема. Поля точно в datetime
10 сен 14, 14:35    [16559448]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про NULL в обновляемом datetime поле  [new]
o-o
Guest
system1024,

еще раз.
запросом поле опросите, а не графически через студию
10 сен 14, 14:37    [16559460]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про NULL в обновляемом datetime поле  [new]
system1024
Member

Откуда:
Сообщений: 18
Я еще на всякий случай напишу по какой причине я вообще занялся этой темой - у нас есть некий скрипт на php, который берет информацию (в том числе даты) из этих таблиц, и вот после переноса он перестал работать корректно, т.к. нужны все поля с датами, а он видит только те, что отображаются, а вот остальные, там где NULL, естественно, не учитывает, что приводит к неверному суммированию и, как следствие, конечному результату.
10 сен 14, 14:41    [16559487]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про NULL в обновляемом datetime поле  [new]
system1024
Member

Откуда:
Сообщений: 18
o-o
system1024,

еще раз.
запросом поле опросите, а не графически через студию


К сообщению приложен файл. Размер - 44Kb
10 сен 14, 14:41    [16559495]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про NULL в обновляемом datetime поле  [new]
o-o
Guest
system1024
он видит только те, что отображаются, а вот остальные, там где NULL, естественно, не учитывает

ну тогда там NULL и есть
сделайте новый бэкап и восстановите.
10 сен 14, 14:48    [16559545]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про NULL в обновляемом datetime поле  [new]
system1024
Member

Откуда:
Сообщений: 18
У нас в эти таблицы данные каждый день перезаписываются из базы нашей внутренней программы, из файла .dbf, в этой базе вся информация на месте, после переноса в SQL получаем NULL
10 сен 14, 14:53    [16559578]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про NULL в обновляемом datetime поле  [new]
o-o
Guest
так при переносе из dbf и теряете часть дат.
только при чем тут перенос базы с одного SQL сервера на другой?
10 сен 14, 14:57    [16559602]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про NULL в обновляемом datetime поле  [new]
system1024
Member

Откуда:
Сообщений: 18
o-o
так при переносе из dbf и теряете часть дат.
только при чем тут перенос базы с одного SQL сервера на другой?


Извините, я тут немного запарился и наверное лишнего написал. Если подытожить, то проблема в том, почему SQL теряет эти даты, в то время как на предыдущей машине все понимал прекрасно и никуда не терял. Собственно я по этому и упомянул перенос базы. Скрипты переноса никто не трогал, никакие настройки нигде не менялись, кроме замены машины и установки студии sql 2005 на win server 2003 (на предыдущей машине была XP)
10 сен 14, 15:05    [16559667]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про NULL в обновляемом datetime поле  [new]
o-o
Guest
т.е. программа корректно переносила даты dbf -> SQL Server на одной машине,
и перестала это делать на другой

это вопрос к тем, кто писал "внутреннюю программу по загрузке dbf"
напортачили где-то с региональными настройками.
10 сен 14, 15:11    [16559710]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про NULL в обновляемом datetime поле  [new]
system1024
Member

Откуда:
Сообщений: 18
Мне кажется дело в том, что когда в SQL попадают данные из dbf, он "думает", что день, это месяц, а так как месяцев всего 12, то все что больше 12 в месяце, он отсекает и ставит NULL, т.к. не может "понять" как месяц может быть 25, например. . В скриптах переноса никто ничего не менял, они вообще лежат отдельно в сети, да и там формат даты верный. Вот я и грешу на SQL, думаю, что где-то в настройках надо что-то сделать или еще что-нибудь, чтобы он понимал дату по формату dmy, а не mdy. Хотя в sql, в свойствах смотрел, там вроде формат dmy, не пойму куда копать.
Если выгружаем информацию из dbf, то он все суммирует и показывает правильно, все даты по формату dmy, а если брать результат скрипта, который выгружает информацию из sql и сравнить с результатом выгруженным из dbf, то помимо того, что половина дат отсутствует, он меняет местами день с месяцем, то есть из dbf выглядит 11.07.2007, а из sql 07.11.2007
10 сен 14, 15:25    [16559843]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про NULL в обновляемом datetime поле  [new]
o-o
Guest
system1024,

можно еще проверить логин, под к-ым "ходит" программа на сервер.
может, на новом сервере этому логину язык сменили
10 сен 14, 15:32    [16559901]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про NULL в обновляемом datetime поле  [new]
system1024
Member

Откуда:
Сообщений: 18
o-o
system1024,

можно еще проверить логин, под к-ым "ходит" программа на сервер.
может, на новом сервере этому логину язык сменили


Там скрипт переносит просто из dbf в sql, без логина
10 сен 14, 15:43    [16559996]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про NULL в обновляемом datetime поле  [new]
o-o
Guest
system1024
Мне кажется дело в том, что когда в SQL попадают данные из dbf, он "думает", что день, это месяц

нет, если в datetime попытаться вставить нечто, что в дату не конвертируется, сервер отвергнет попытку и выдаст ошибку:
Msg 241, Level 16, State 1, Line 2
Conversion failed when converting date and/or time from character string.

скорее это проблема чтения из dbf, а там не знаю, где и как ему указать формат даты.
т.е. на SQL сервер передается уже NULL и спокойно вставляется.
это можно проверить.
сделать это поле NOT NULL.
программа больше не сможет вставлять NULL и отвалится.
10 сен 14, 15:44    [16560003]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про NULL в обновляемом datetime поле  [new]
o-o
Guest
system1024
Там скрипт переносит просто из dbf в sql, без логина

как можно что-то писать в базу, не залогинившись на сервере-то?
вот бы все так и писали напрямую в mdf

"там" это где, в программе?
в ней где-то есть строка подключения, там и смотрите, под кем ходит на сервер.
10 сен 14, 15:47    [16560030]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про NULL в обновляемом datetime поле  [new]
system1024
Member

Откуда:
Сообщений: 18
o-o
system1024
Мне кажется дело в том, что когда в SQL попадают данные из dbf, он "думает", что день, это месяц

нет, если в datetime попытаться вставить нечто, что в дату не конвертируется, сервер отвергнет попытку и выдаст ошибку:
Msg 241, Level 16, State 1, Line 2
Conversion failed when converting date and/or time from character string.

скорее это проблема чтения из dbf, а там не знаю, где и как ему указать формат даты.
т.е. на SQL сервер передается уже NULL и спокойно вставляется.
это можно проверить.
сделать это поле NOT NULL.
программа больше не сможет вставлять NULL и отвалится.


Тогда как объяснить то, что он больше 12 нигде не ставит даты?
10 сен 14, 15:48    [16560037]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про NULL в обновляемом datetime поле  [new]
system1024
Member

Откуда:
Сообщений: 18
В dbf формат даты верный, в том то и дело. Про логин я что-то не то сказал, сейчас попробую посмотреть.
10 сен 14, 15:56    [16560076]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить