powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / работа с датами в Interbase 2009
47 сообщений из 47, показаны все 2 страниц
работа с датами в Interbase 2009
    #39117896
BenKenoby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени!

Какой есть наиболее простой способ вычесть из даты 1 год? Т.е. именно 1 год, а не 365/366 дней :-)
...
Рейтинг: 0 / 0
работа с датами в Interbase 2009
    #39117900
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разложить на части EXTRACT-ом, вычесть единицу из года, сложить в строку, преобразовать
CAST-ом и молиться, что дата - не 29-е февраля.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
работа с датами в Interbase 2009
    #39117954
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovРазложить на части EXTRACT-ом, вычесть единицу из года, сложить в строку, преобразовать
CAST-ом и молиться, что дата - не 29-е февраля.


Продолжаем пускать поезда под откос? :)

Руководство по языку
SQL СУБД Firebird 2.5

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
Функции для работы с датой и временем
DATEADD

Доступно в: DSQL, PSQL.
Синтаксис:
DATEADD (<args>)
<args> ::= amount <unit> TO datetime
| <unit>, amount, datetime
<unit> ::=
YEAR | MONTH | WEEK | DAY | WEEKDAY | YEARDAY
| HOUR | MINUTE | SECOND | MILLISECOND
Параметры функции DATEADD
amount Целое выражение типа SMALLINT или INTEGER (отрицательное
вычитается).
unit Составляющая даты/времени.
datetime Выражение типа DATE, TIME или TIMESTAMP.
Тип возвращаемого результата: определяется третьим аргументом функции.

Пример 8.41. Использование функции DATEADD
DATEADD (28 DAY TO CURRENT_DATE)
DATEADD (-6 HOUR TO CURRENT_TIME)
DATEADD (MONTH, 9, DATEOFCONCEPTION)
DATEADD (-38 WEEK TO DATEOFBIRTH)
DATEADD (MINUTE, 90, TIME 'NOW')
DATEADD (? YEAR TO DATE '11-SEP-1973')
...
Рейтинг: 0 / 0
работа с датами в Interbase 2009
    #39118108
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Fraks!
You wrote on 2 декабря 2015 г. 11:07:49:

Fraks> Руководство по языку
> SQL СУБД Firebird 2.5весьма актуально для Interbase 2009

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
работа с датами в Interbase 2009
    #39118297
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,

а в SP IB2009 можно сделать внешнее соединение к FB 2.5 и там выполнить запрос ?
...
Рейтинг: 0 / 0
работа с датами в Interbase 2009
    #39118316
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Arioch!
You wrote on 2 декабря 2015 г. 13:24:23:

Arioch> а в SP IB2009 можно сделать внешнее соединение к FB 2.5 и там выполнить запрос ?
а я знаю?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
работа с датами в Interbase 2009
    #39118364
DBConstructor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
SELECT
    CURRENT_TIMESTAMP
    - Iif(Mod(Extract(YEAR FROM CURRENT_DATE), 4) = 0, 366, 365)
  FROM RDB$DATABASE;
...
Рейтинг: 0 / 0
работа с датами в Interbase 2009
    #39118377
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DBConstructor,

осталось только найти в IB IIF и MOD.

Вот даже не поленился скачать их LangRef от Interbase XE7. Нету у них ни фига.
...
Рейтинг: 0 / 0
работа с датами в Interbase 2009
    #39118383
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ariochа в SP IB2009 можно сделать внешнее соединение к FB 2.5 и там выполнить запрос ?
нельзя.
...
Рейтинг: 0 / 0
работа с датами в Interbase 2009
    #39118403
Фотография Секретное имя пользователя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DBConstructor
Код: sql
1.
2.
3.
4.
SELECT
    CURRENT_TIMESTAMP
    - Iif(Mod(Extract(YEAR FROM CURRENT_DATE), 4) = 0, 366, 365)
  FROM RDB$DATABASE;

Ну неправильно ведь
...
Рейтинг: 0 / 0
работа с датами в Interbase 2009
    #39118405
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...ещё никто не упомянул cтандартные UDFки типа rFunc :-)
...
Рейтинг: 0 / 0
работа с датами в Interbase 2009
    #39118413
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Arioch!
You wrote on 2 декабря 2015 г. 14:18:42:

Arioch> ...ещё никто не упомянул cтандартные UDFки типа rFunc :-)
они НЕ стандартные.
а тем более в области работы с датой/временем, для которой оные дёргают клиентскую библиотеку IB/FB.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
работа с датами в Interbase 2009
    #39118414
DBConstructor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Секретное имя пользователя, неправильно что? Принцип расчета?
...
Рейтинг: 0 / 0
работа с датами в Interbase 2009
    #39118449
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно так:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
create or alter procedure SUBYEAR (
    ADATE date)
returns (
    OUTDATE date)
AS
declare variable d integer;
declare variable y integer;
declare variable m integer;
declare variable yd integer;
begin
  select extract(day from :adate),
         extract(month from :adate),
         extract(year from :adate)
  from rdb$database
  into :d,:m,:y;
  y=y-1;
  if (m=2 and d=29) then
     begin
        select extract(yearday from cast('31.12.'||:y as date)) from rdb$database
        into :yd;
        if (yd=364) then d=28;
     end
  outdate=cast(d||'.'||m||'.'||y as date);
  suspend;
end
...
Рейтинг: 0 / 0
работа с датами в Interbase 2009
    #39118587
DBConstructor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Жаль нельзя самостоятельно удалять свои предыдущие сообщения. Моленько накосячил впопыхах.
Думаю, так будет правильнее:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
SET TERM ^;
CREATE OR ALTER PROCEDURE SUBYEAR
  (
    TMSTMP  TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    CNT     SMALLINT DEFAULT 1
  )
  RETURNS
  (
    RET     TIMESTAMP
  )
AS
  DECLARE VARIABLE Y INTEGER DEFAULT NULL;
  DECLARE VARIABLE D SMALLINT DEFAULT 365;
BEGIN
  IF (:CNT > 0) THEN
    BEGIN
      IF (:CNT > 1) THEN
        SELECT RET
          FROM SUBYEAR(:TMSTMP, :CNT - 1)
          INTO: RET;
      ELSE
        RET = TMSTMP;
      SELECT EXTRACT(YEAR FROM :RET)
        FROM RDB$DATABASE
        INTO: Y;
      IF (:RET < Cast('01.03.' || :Y AS TIMESTAMP)) THEN Y = Y - 1;
      IF (CAST(:Y AS NUMERIC(14, 2)) / 4 = :Y / 4) THEN D = 366;
      RET = RET - D;
    END
  SUSPEND;
END^
SET TERM ;^
COMMIT WORK;
...
Рейтинг: 0 / 0
работа с датами в Interbase 2009
    #39118599
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DBConstructorМоленько накосячил впопыхах.Спешка нужна при ловле блох. Пара постов выше по просьбе автора зачищены.

нет смысла писать подобные выкрутасы в ХП
SELECT EXTRACT(YEAR FROM :RET)
FROM RDB$DATABASE
INTO: Y;

будь лаконичней
Y = EXTRACT(YEAR FROM :RET);

Ariochникто не упомянул cтандартные UDFки типа rFunc :-)Написать свою.
...
Рейтинг: 0 / 0
работа с датами в Interbase 2009
    #39118746
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересно, какой "год назад" хочет получить ТС для 29 февраля.
А-то вы все ринулись говнокод плодить да про фичи спорить.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
работа с датами в Interbase 2009
    #39118749
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вполне разумное соглашение - "день в том же самом месяце, но год назад".
В условиях примера это будет "последний день февраля и пофигу, сколько в нём дней".
...
Рейтинг: 0 / 0
работа с датами в Interbase 2009
    #39118764
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov> В условиях примера это будет "последний день февраля и пофигу, сколько в нём дней".

Тю, так это проще простого. Тупо в лоб

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
create or alter procedure subyear ( adate date )
returns ( outdate date )
as
declare variable d integer;
declare variable y integer;
declare variable m integer;
begin
  select extract(day from :adate), extract(month from :adate), extract(year from :adate)
  from rdb$database
  into :d,:m,:y;
  y = :y - 1;
  if (:m = 2 and :d = 29) then
    d = 28;
  outdate=cast(:d || '.' || :m || '.' || :y as date);
  suspend;
end



Ну или любые вариации с проверкой тек. даты на високосность.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
работа с датами в Interbase 2009
    #39118766
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя, если оторваться задницу от кресла, а руки от чашки
чая и сделать Диме выговор с занесением, то эстетически
и идеологически вместо запроса правильнее будет

d = select extract(day from :adate);
m = extract(month from :adate);
y = extract(year from :adate);

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
работа с датами в Interbase 2009
    #39118773
DBConstructor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам, лично у меня ступор. От какого момента считать 365 дней, а от какого 366.
К примеру, 01 марта следующего за високосным года за вычетом года, это 29 февраля високосного, 28 февраля так и будет - 28 февраля, а 2 марта - 1 марта високосного.
Или я не прав?
...
Рейтинг: 0 / 0
работа с датами в Interbase 2009
    #39118790
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DBConstructor> лично у меня ступор

Это бывает 365 дней в году или 366 ?

> 01 марта следующего за високосным года за вычетом года,
> это 29 февраля високосного, а 2 марта - 1 марта високосного.

OMG, сделайте мне развидеть это.
Сжалься над собой, сходи в Кащенко.

> Или я не прав?

Ну конечно нет. Внезапно?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
работа с датами в Interbase 2009
    #39118807
DBConstructor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам, тогда внимательно прочту твой вариант.
...
Рейтинг: 0 / 0
работа с датами в Interbase 2009
    #39119207
Фотография Секретное имя пользователя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DBConstructorСекретное имя пользователя, неправильно что? Принцип расчета?Да
1. Почитай про високосные годы.
2. Да и х** с ними, високосными годами, они там раз в сто лет не так, посмотри лучше, что даст твой алгоритм для исходной даты 01.01.2012
...
Рейтинг: 0 / 0
работа с датами в Interbase 2009
    #39119228
Граур Станислав
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
работа с датами в Interbase 2009
    #39119253
DBConstructor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это окончательный вариант:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
SET TERM ^;
CREATE OR ALTER PROCEDURE SUBYEAR
  (
    TMSTMP  TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    CNT     SMALLINT DEFAULT 1
  )
  RETURNS
  (
    RET     TIMESTAMP
  )
AS
  DECLARE VARIABLE T NUMERIC(14, 2) DEFAULT NULL;
  DECLARE VARIABLE Y INTEGER DEFAULT NULL;
BEGIN
  IF (:CNT > 0) THEN
    BEGIN
      IF (:CNT > 1) THEN
        SELECT RET - 365
          FROM SUBYEAR(:TMSTMP, :CNT - 1)
          INTO: RET;
      ELSE
        RET = TMSTMP - 365;
      Y = EXTRACT(YEAR FROM :RET);
      T = CAST(Y AS NUMERIC(14, 2)) / 4 - Y / 4;
      IF (:T = 0 AND RET < CAST(Y || '-12-31 00:00' AS TIMESTAMP)) THEN
        RET = RET - 1;
    END
  SUSPEND;
END^
SET TERM ;^
COMMIT WORK;



Проходит следующую процедуру проверки:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
CREATE GLOBAL TEMPORARY TABLE TEST_SUBYEAR
(
    SRC   TIMESTAMP NOT NULL,
    XPECT TIMESTAMP NOT NULL,
    CNT   SMALLINT  DEFAULT 1 NOT NULL,
  CONSTRAINT TEST_SUBYEAR PRIMARY KEY (SRC, CNT)
) ON COMMIT DELETE ROWS;
COMMIT WORK;


EXECUTE BLOCK
  RETURNS
  (
    ACTSTR  VARCHAR(78),
    XPECTD  TIMESTAMP,
    RESULT  TIMESTAMP,
    STATUS  CHAR(4)
  )
AS
BEGIN
  INSERT INTO TEST_SUBYEAR VALUES ('2016-01-01 00:00', '2015-01-01 00:00', 1);
  INSERT INTO TEST_SUBYEAR VALUES ('2016-01-01 00:00', '2012-01-01 00:00', 4);
  INSERT INTO TEST_SUBYEAR VALUES ('2016-02-28 00:00', '2015-02-28 00:00', 1);
  INSERT INTO TEST_SUBYEAR VALUES ('2016-02-28 00:00', '2012-02-28 00:00', 4);
  INSERT INTO TEST_SUBYEAR VALUES ('2016-02-29 00:00', '2015-03-01 00:00', 1);
  INSERT INTO TEST_SUBYEAR VALUES ('2016-02-29 00:00', '2012-02-29 00:00', 4);
  INSERT INTO TEST_SUBYEAR VALUES ('2016-03-01 00:00', '2015-03-02 00:00', 1);
  INSERT INTO TEST_SUBYEAR VALUES ('2016-03-01 00:00', '2012-03-01 00:00', 4);
  INSERT INTO TEST_SUBYEAR VALUES ('2016-12-31 00:00', '2015-12-31 00:00', 1);
  INSERT INTO TEST_SUBYEAR VALUES ('2016-12-31 00:00', '2012-12-31 00:00', 4);

  INSERT INTO TEST_SUBYEAR VALUES ('2017-01-01 00:00', '2016-01-01 00:00', 1);
  INSERT INTO TEST_SUBYEAR VALUES ('2017-01-01 00:00', '2013-01-01 00:00', 4);
  INSERT INTO TEST_SUBYEAR VALUES ('2017-02-28 00:00', '2016-02-28 00:00', 1);
  INSERT INTO TEST_SUBYEAR VALUES ('2017-02-28 00:00', '2013-02-28 00:00', 4);
  INSERT INTO TEST_SUBYEAR VALUES ('2017-03-01 00:00', '2016-02-29 00:00', 1);
  INSERT INTO TEST_SUBYEAR VALUES ('2017-03-01 00:00', '2013-03-01 00:00', 4);
  INSERT INTO TEST_SUBYEAR VALUES ('2017-12-30 00:00', '2016-12-29 00:00', 1);
  INSERT INTO TEST_SUBYEAR VALUES ('2017-12-30 00:00', '2013-12-30 00:00', 4);
  INSERT INTO TEST_SUBYEAR VALUES ('2017-12-31 00:00', '2016-12-31 00:00', 1);
  INSERT INTO TEST_SUBYEAR VALUES ('2017-12-31 00:00', '2013-12-31 00:00', 4);

  FOR
      SELECT
          'SUBYEAR(''' || SRC || ''', ' || CNT || ') == ''' || XPECT || '''',
          XPECT,
          (SELECT RET FROM SUBYEAR(SRC, CNT))
        FROM TEST_SUBYEAR
        ORDER BY SRC, CNT
        INTO: ACTSTR, XPECTD, RESULT
    DO
      BEGIN
        IF (:XPECTD = :RESULT) THEN
          STATUS = 'PASS';
        ELSE
          STATUS = 'FAIL';
        SUSPEND;
      END
END;
...
Рейтинг: 0 / 0
работа с датами в Interbase 2009
    #39119263
DBConstructor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Секретное имя пользователя2. Да и х** с ними, високосными годами, они там раз в сто лет не так, посмотри лучше, что даст твой алгоритм для исходной даты 01.01.2012
Окстись, родной! Каждый четвертый год.
...
Рейтинг: 0 / 0
работа с датами в Interbase 2009
    #39119284
Фотография Секретное имя пользователя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DBConstructorСекретное имя пользователя2. Да и х** с ними, високосными годами, они там раз в сто лет не так, посмотри лучше, что даст твой алгоритм для исходной даты 01.01.2012
Окстись, родной! Каждый четвертый год.Раз в сто лет не так, как обычно
...
Рейтинг: 0 / 0
работа с датами в Interbase 2009
    #39119431
DBConstructor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам> 01 марта следующего за високосным года за вычетом года,
> это 29 февраля високосного, а 2 марта - 1 марта високосного.

OMG, сделайте мне развидеть это.
Сжалься над собой, сходи в Кащенко.
Испытываешь серьезные проблемы с пониманием изложенного? Объясню на пальцах:
1. 29 февраля, это 60-ый день високосного года;
2. 60-ый день невисокосного года - 1 марта;
Так понятней или у тебя еще остались проблемы в понимании азов григорианского календаря?
https://ru.wikipedia.org/wiki/Григорианский_календарь

> Или я не прав?

Гаджимурадов РустамНу конечно нет. Внезапно?
Да! Внезапно обнаружил у тебя потрясающую, а главное - ничем не аргументированную уверенность в собственной неправоте.
...
Рейтинг: 0 / 0
работа с датами в Interbase 2009
    #39120067
_Читатель_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемый(е) модераторы!

Я хоть и не участник форума, но регулярно его читаю уже на протяжении более 10 лет,
и хочу заметить, что в последнее время форум, извините, засран тупыми и неинформативными
сообщениями DBConstructor-а настолько что... короче сильно. В связи с этим убедительно прошу
забанить DBConstructor-а нафик.

С уважением, Читатель.
...
Рейтинг: 0 / 0
работа с датами в Interbase 2009
    #39120217
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамOMG, сделайте мне развидеть это.
Говорят, шизофреники вполне себе логичны в рамках своего выдуманного мира.
...
Рейтинг: 0 / 0
работа с датами в Interbase 2009
    #39120305
DBConstructor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSeryГоворят, шизофреники вполне себе логичны в рамках своего выдуманного мира.
Говорят, люди частенько других примеряют по себе.
...
Рейтинг: 0 / 0
работа с датами в Interbase 2009
    #39120329
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DBConstructor,

Повтори свой бред про календарные дни, я попробую примерить.
...
Рейтинг: 0 / 0
работа с датами в Interbase 2009
    #39120334
DBConstructor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSery, изволь:
1. 29 февраля, это 60-ый день високосного года;
2. 60-ый день невисокосного года - 1 марта;
https://ru.wikipedia.org/wiki/Григорианский_календарь
...
Рейтинг: 0 / 0
работа с датами в Interbase 2009
    #39120346
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DBConstructor,

Не, не примеряется.
Никак у меня в голове не совмещается задача "добавить/отнять год (месяц, неделю)" и "календарные дни" или "60 дней с начала года".
Ведь сегодня 4 декабря, и через месяц будет 4 января, а не 3 января, как в твоём параллельном мире через 30 дней.

Ну и раз есть ссылка на что-то, то я тоже приведу. Лунный календарь.
...
Рейтинг: 0 / 0
работа с датами в Interbase 2009
    #39120433
DBConstructor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSery, похоже, что кто-то из присутствующих считает, что арифметические операции неприменимы к календарным датам и операция "29 февраля 2016г. минус 1 год" вызывает в их мозгу исключение, сходное с исключением "divide by zero".
Чтож... Не буду разубеждать.
...
Рейтинг: 0 / 0
работа с датами в Interbase 2009
    #39120555
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DBConstructor,

Ты и не сможешь никого разубедить. Поскольку убеждать в чём-то можно фактами и умозаключениями.
А ты пишешь сперва "минус год", и тут же начинаешь считать сутками. Где логика?
Вопрос риторический.
...
Рейтинг: 0 / 0
работа с датами в Interbase 2009
    #39120599
DBConstructor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSery, ну хорошо... Если ты так ставишь вопрос, то:
1. Приведи определение понятию "календарный год" Григорианского календаря;
2. Приведи результат вычисления "29 февраля 2016г. минус 1 год";
...
Рейтинг: 0 / 0
работа с датами в Interbase 2009
    #39120616
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DBConstructor2. Приведи результат вычисления "29 февраля 2016г. минус 1 год";Задолбал, если честно, неужели сам не осилил конструкцию:
select dateadd (-1 year to date '29.02.2016') from rdb$database
...
Рейтинг: 0 / 0
работа с датами в Interbase 2009
    #39120652
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DBConstructor1. Приведи определение понятию "календарный год" Григорианского календаря;Ты ж даже ссылку приводил, из педивикии. Вот и прочти.
DBConstructor2. Приведи результат вычисления "29 февраля 2016г. минус 1 год";Детская задачка.
Гораздо интереснее ответ на вопрос "28 февраля 2015г. плюс 1 год". Вот здесь уже нет однозначного ответа, без доп.условий.
Тут даже dateadd не поможет.
...
Рейтинг: 0 / 0
работа с датами в Interbase 2009
    #39120665
DBConstructor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_PisarevskyЗадолбал, если честно, неужели сам не осилил конструкцию:
select dateadd (-1 year to date '29.02.2016') from rdb$database
Не знал, что в современной версии Interbase это есть. У меня LangRef только для IB2009.
...
Рейтинг: 0 / 0
работа с датами в Interbase 2009
    #39121037
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Топик (внезапно!) получил продолжение.
DBConstructorИспытываешь серьезные проблемы с пониманием изложенного? Объясню на пальцах:
1. 29 февраля, это 60-ый день високосного года;
2. 60-ый день невисокосного года - 1 марта;Голубочик, объяснить мне тебе не по силам.
Дискутировать я с тобой не буду, конечно, но
мне всё же интересно, чему будет равняться
по этой твоей логике "31.12.2016 +1 год" ?

Нет, ответ я примерно представляю, конечно,
но хочу посмотреть, как ты будешь "вилять".
Так, чисто поржать. (с) КВН

DBConstructorДа! Внезапно обнаружил у тебя потрясающую, а главное - ничем
не аргументированную уверенность в собственной не правоте.Гм... Тебе не только в Кащенко надо сходить,
но и к филологу, однозначно.
...
Рейтинг: 0 / 0
работа с датами в Interbase 2009
    #39121046
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSery2. Приведи результат вычисления "29 февраля 2016г. минус 1 год";Детская задачка.
Гораздо интереснее ответ на вопрос "28 февраля 2015г. плюс 1 год".
Вот здесь уже нет однозначного ответа, без доп.условий.Знаешь, я бы не сказал, что детская. По сути, эти две задачки
идентичны, способ формирования ответа на них одинаковый.
Собсно, формулировка Сидорова: 18504735 и 18504748

Твоё "нет однозначного ответа" я понимаю (выбор из двух),
но и в минус ситуация та же - один ответ на два вопроса.

Почему-то вспомнились мнимые числа, та же нестыковка.
...
Рейтинг: 0 / 0
работа с датами в Interbase 2009
    #39121931
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамТвоё "нет однозначного ответа" я понимаю (выбор из двух)
Тогда три варианта.
Просто ответы на два из них совпадают, но это не делает их равнозначными.
...
Рейтинг: 0 / 0
работа с датами в Interbase 2009
    #39122667
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSery> Тогда три варианта.

Какие именно три?

> Просто ответы на два из них совпадают, но это не делает их равнозначными.

Нет, не ответы/вопросы равнозначные.
Способы формирования ответа одинаковые.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
работа с датами в Interbase 2009
    #39122841
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

Сперва ответь, какие два варианта для "29 февраля 2016 минус год"
...
Рейтинг: 0 / 0
работа с датами в Interbase 2009
    #39123016
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSeryСперва ответь, какие два варианта для "29 февраля 2016 минус год"
На 29 минус год не 2 ответа, а один ответ (28.02) на 2 вопроса (29.02- и 28.02-).
На "28 февраля 2015г. плюс 1 год" "возможных" (если не договориться) ответов
тоже два - 28.02.16 и 29.02.16, потому и задачи идентичные, на мой взгляд.

А в каком случае (вопросе) может быть три варианта ответа, я не уловил.
...
Рейтинг: 0 / 0
47 сообщений из 47, показаны все 2 страниц
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / работа с датами в Interbase 2009
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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