Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 31 32 33 34 35 36 37 [38] 39 40   вперед  Ctrl
 Re: Топик "как я лажанулся"  [new]
JaDi
Member

Откуда: Сызрань, Россия
Сообщений: 3549
Гаджимурадов Рустам
И зачем вообще эти танцы с бубном, если
даты напрямую нормально сравниваются,
или ваш 40+10 этого не знал?

У МС всё не как у людей. И до 2008 версии сервера даты нормально сравнивать нельзя было, народ велосипеды строчил. См. раз или два.
4 янв 18, 20:31    [21082299]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
fraks
Member

Откуда: Новосибирск
Сообщений: 1374
JaDi
Проверка новогодних праздников вида "показывать поздравления с 15 декабря по 15 января":
 - взять текущий год;
 - сделать мин и макс даты вида:
   а. мин дата = текущий год, декабрь, 15;
   б. макс дата = текущий год + 1, январь, 15;
 - добавить проверку на "если сегодняшний день между макс и мин датой, то поздравить";
 - радоваться после нового года :-)


Что-то я не увидел в чем фейл. Объясните дураку.

Упс, пока писал сам увидел. "Текущий год" - он такой :)
4 янв 18, 20:36    [21082303]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 58928
JaDi> И до 2008 версии сервера даты нормально сравнивать нельзя было

Глупости. Если кто-то что-то не умеет или строит кривые
лисапеды, это не значит, что в СУБД нет соотв. возможности.

Posted via ActualForum NNTP Server 1.5

4 янв 18, 20:38    [21082307]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
JaDi
Member

Откуда: Сызрань, Россия
Сообщений: 3549
Гаджимурадов Рустам
JaDi> И до 2008 версии сервера даты нормально сравнивать нельзя было

Глупости. Если кто-то что-то не умеет или строит кривые
лисапеды, это не значит, что в СУБД нет соотв. возможности.

Нету нормальных. См. ссылки выше. Так что тут не всё так однозначно:
автор
И зачем вообще эти танцы с бубном, если
даты напрямую нормально сравниваются,
4 янв 18, 21:34    [21082398]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
rgreat
Member

Откуда:
Сообщений: 4252
Гаджимурадов Рустам
Неужели код вообще не тестировался?
Ну если не первый, то второй-третий
тест сразу же выявит ошибку...

Дык у него "YEAR(DATE1)>YEAR(DATE2) AND MONTH(DATE1)>MONTH(DATE2) AND DAY(DATE1)>DAY(DATE2)" нормально и не работало на тестах, после чего он попросил совета.
Отчего у него так в голове выглюкало подобный запрос - я не знаю.

И зачем вообще эти танцы с бубном, если
даты напрямую нормально сравниваются,
или ваш 40+10 этого не знал?
Я сам теряюсь.
К тому же это был не MSSQL и можно было напрямую Date1 и Date2 сравнить.
4 янв 18, 21:58    [21082417]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
alekcvp
Member

Откуда:
Сообщений: 1059
JaDi
У МС всё не как у людей. И до 2008 версии сервера даты нормально сравнивать нельзя было, народ велосипеды строчил. См. раз или два.

А ничего что в первом случае чувак сравнивает DATETIMEы только по дате и удивляется что у него это не получается?

Ну это как в дельфи написать:
const 
  A: Single = 10.23;
  B: Single = 10.0;
...
if A <=B then ...
И удивляться потом, почему A <= B ложно, ведь оба равны 10?..
4 янв 18, 22:38    [21082458]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
JaDi
Member

Откуда: Сызрань, Россия
Сообщений: 3549
alekcvp
JaDi
У МС всё не как у людей. И до 2008 версии сервера даты нормально сравнивать нельзя было, народ велосипеды строчил. См. раз или два.

А ничего что в первом случае чувак сравнивает DATETIMEы только по дате и удивляется что у него это не получается?

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

alekcvp
Ну это как в дельфи написать:
const 
  A: Single = 10.23;
  B: Single = 10.0;
...
if A <=B then ...
И удивляться потом, почему A <= B ложно, ведь оба равны 10?..

Неверный пример (опечатка?). Для делфи эта тема тоже актуальна, т.к. время в датах пробирается при любом удобном случае, например, при получение последнего дня в году или месяце. И потом косячутся сравнения, если забудется где DateOf.
4 янв 18, 23:36    [21082513]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
alekcvp
Member

Откуда:
Сообщений: 1059
JaDi
которые вынуждены писать разработчики ...

... не подумавшие хранить дату и время в базе раздельно, если им нужен к ним раздельный доступ?
4 янв 18, 23:49    [21082520]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
JaDi
Member

Откуда: Сызрань, Россия
Сообщений: 3549
alekcvp
JaDi
которые вынуждены писать разработчики ...

... не подумавшие хранить дату и время в базе раздельно, если им нужен к ним раздельный доступ?

Раздельно хранить дату и время в базе -- мягко говоря спорное решение, для которого должны быть ВЕСКИЕ причины. Наверное, хорошая история получилась бы про "лажание" для этой темы.
5 янв 18, 00:29    [21082539]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 58928
JaDi> отсутствия стандартного решения?

Что за бред? Есть обычные операции сравнения,
есть соотв. функции datediff etc, есть cast и convert
в конце концов. Лыжи нужно к месту одевать.

Posted via ActualForum NNTP Server 1.5

5 янв 18, 00:43    [21082550]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 58928
alekcvp> ... не подумавшие хранить дату и время в базе раздельно,
alekcvp> если им нужен к ним раздельный доступ?

А если нужен вместе - хранить их ещё и в третьем поле? :)
Вот уж, действительно, в тему топика, из крайности в крайность.

Posted via ActualForum NNTP Server 1.5

5 янв 18, 00:44    [21082555]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
JaDi
Member

Откуда: Сызрань, Россия
Сообщений: 3549
А вот, кстати, как у DevExpress обрезается время (dxDateOf) -- через преобразование в таймстамп:

Result := DateTimeToTimeStamp(AValue).Date - DateDelta;


Для сравнения родная делфя:
Result := Trunc(AValue);
5 янв 18, 10:24    [21082831]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
alekcvp
Member

Откуда:
Сообщений: 1059
Гаджимурадов Рустам
alekcvp> ... не подумавшие хранить дату и время в базе раздельно,
alekcvp> если им нужен к ним раздельный доступ?

А если нужен вместе - хранить их ещё и в третьем поле? :)
Вот уж, действительно, в тему топика, из крайности в крайность.

Ну для вывода-то всегда можно объеденить, а если на сервере нет CAST(...) AS DATE, то что лучше?
5 янв 18, 12:28    [21082966]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 58928
alekcvp> если на сервере нет CAST(...) AS DATE, то что лучше?

то лучше сменить этот сервер на нормальный. :)

Posted via ActualForum NNTP Server 1.5

5 янв 18, 12:39    [21082986]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
чччД
Guest
Детский сад, штаны на лямках.
    fQ.SQL.Text := 'select'
      + ' Field_A, Field_B, Field_C, Field_D'
      + ' Field_E, Field_F,...'
      + ' from ...'

Запрос выполняется, смотрю результат, а именно - 'Field_E' - получаю какую-то хрень. В самой табличке с данными все ОК, видно в IBExpert-е. Оказывается, запятую после Field_D не поставил, т.е., вместо поля Field_E я читал значение поля Field_D...
15 фев 18, 12:36    [21193507]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 52852
Блог
А лично по мне, лажа здесь не в запятой, а в ненужной динамике...
15 фев 18, 12:54    [21193592]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
чччД
Guest
softwarer
...в ненужной динамике...

"Заказной" плагин желает пообщаться с подключенной базой, запрашивает хост-приложение,
хост-приложение создает объект доступа (на основе компонента доступа к БД) в контексте текущего коннекта
и возвращает плагину интерфейс созданного объекта... куда тут "статику" впихнуть?
15 фев 18, 13:22    [21193696]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 52852
Блог
чччД,

если такой стиль диктуется "хост-приложением" - проблема, соответственно, в плохо спроектированном API этого хост-приложения.
15 фев 18, 13:39    [21193750]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
чччД
Guest
softwarer,

В чем проблема-то?
15 фев 18, 13:42    [21193770]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
JaDi
Member

Откуда: Сызрань, Россия
Сообщений: 3549
Примерный кусок PL/SQL кода в оракле. Казалось бы, куда уж проще:
  ...
  plan_id := 123;
  plan_pos_id := 456;
  ...
  update docs d
  set 
    d.plan_doc_id = plan_id, d.plan_pos_id = plan_pos_id
  where 
    d.id = 789;


Долго не мог понять, почему меняется только одно поле, а второе (plan_pos_id) не изменяется. И всякие триггеры проверял, и вьюхи, и таблицы. Даже под pl/sql отладчиком -- везде показываются корректные данные. Но значение не присваивается.

Оказалось, что имя локальной переменной совпало с именем поля из таблицы, поэтому оракл в процедуре решил брать именно колонку, а не переменную О_о
8 май 18, 05:33    [21394565]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
Exteris
Member

Откуда: Новосибирск
Сообщений: 952
По этой причине я всегда ставлю двоеточие перед переменной в firebird.
8 май 18, 07:25    [21394604]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
alekcvp
Member

Откуда:
Сообщений: 1059
Exteris
По этой причине я всегда ставлю двоеточие перед переменной в firebird.

А firebird, AFAIR, и не позволяет в запросах писать переменные без двоеточия.
8 май 18, 09:54    [21394853]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
wadman
Member

Откуда: Санкт-Петербург
Сообщений: 24071
alekcvp
Exteris
По этой причине я всегда ставлю двоеточие перед переменной в firebird.

А firebird, AFAIR, и не позволяет в запросах писать переменные без двоеточия.

В некоторых случаях позволяет.
8 май 18, 09:58    [21394861]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
DarkMaster
Member

Откуда: Donetsk,Ukraine
Сообщений: 6001
alekcvp,

А тут дело не в переменной, а в совпадении имен. Ровно такой же результат будет и в FB
8 май 18, 09:58    [21394862]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
stells2
Member

Откуда: Оклахома Пригород Колымы
Сообщений: 878
JaDi
Примерный кусок PL/SQL кода в оракле. Казалось бы, куда уж проще:
Оказалось, что имя локальной переменной совпало с именем поля из таблицы, поэтому оракл в процедуре решил брать именно колонку, а не переменную О_о

Так а что он должен еще брать? Откуда он знает что у вас на столе, в портфеле или у друга на даче находится?
Я всегда, чисто для себя, использую префикс у переменных.
т.е. было бы так
set plan_doc_id = v_plan_id,  plan_pos_id = v_plan_pos_id -- для локальных
--и 
set plan_doc_id = p_plan_id,  plan_pos_id = p_plan_pos_id -- для входных

мне так проще :)
8 май 18, 10:03    [21394876]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 31 32 33 34 35 36 37 [38] 39 40   вперед  Ctrl
Все форумы / Delphi Ответить