Гость
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Перевести скрипт на Postgresql / 14 сообщений из 14, страница 1 из 1
29.01.2020, 08:05
    #39919755
Angelo Lagusa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести скрипт на Postgresql
Мне надо перевести скрипт написанной на Sql Server на Postgresql, прошу помощи. Благодарю

SQL Server:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select dateissue,sum(sum_credit_kzt) sum_credit_kzt, sum(loan_kzt) loan_kzt,count(loan_accnt_QPragma) cnt_contract,p.product,b.branch
from (select 
dateadd(month,1,convert(datetime,convert(varchar(2),(month(dateadd(day,2-day(dateadd(day,0,data_issue)),(data_issue)))))+'/1/'+convert(char(4),year(dateadd(day,2-day(dateadd(day,0,data_issue)),(data_issue)))),101)) dateissue
, s.*
from Aizhan.dbo.ssudnik_2013_2015 s
where year(period_report)>'2013'  and type_client='ФЛ')a
join prod p on p.Id_product=a.product and a.type_client=p.type_client
join branch b on b.id_branch=a.branch
where dateissue=period_report



На Postgresql я написал так, но к сожалению скрипт не работает:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select dateissue, sum(sum_credit_kzt) sum_credit_kzt, sum(loan_kzt) loan_kzt, count(loan_accnt_qpragma) cnt_contract, p.product, b.branch
from (select 
dateadd(cast(datetime,cast((month((((data_issue + interval '1' day)),(data_issue)+interval '2-day' day))) as varchar)+'/1/' + cast(year((((data_issue + interval '0' day)),(data_issue) + interval '2-day' day)) as varchar)) + interval '1' month) dateissue
, s.*
from portfolio.ssudnik s
where to_char(period_report,'yyyy') > '2013'  and type_client = 'ФЛ') a
join prod p on p.Id_product = a.product and a.type_client = p.type_client
join branch b on b.id_branch = a.branch
where dateissue = period_report
...
Рейтинг: 0 / 0
29.01.2020, 12:34
    #39919887
Lonepsycho
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести скрипт на Postgresql
Angelo Lagusa,

перепишите запрос.
...
Рейтинг: 0 / 0
29.01.2020, 12:39
    #39919892
Angelo Lagusa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести скрипт на Postgresql
Lonepsycho, по подробнее пж. переписал не работает, не до конца перевел скрипт
...
Рейтинг: 0 / 0
29.01.2020, 13:29
    #39919911
Lonepsycho
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести скрипт на Postgresql
Angelo Lagusа
приводите ошибки, для более конкретных ответов
...
Рейтинг: 0 / 0
29.01.2020, 13:41
    #39919914
Lonepsycho
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести скрипт на Postgresql
Angelo Lagusa,

interval '1' day, , select [b]dateadd(... , interval '2-day' day ....

посмотрите как пишутся литералы это для начала, "[b]" надеюсь артефакт какого-то редактора. дальше разбирать не буду, смотрите лог, какие ошибки получаете, и смотрите что да как не так.
...
Рейтинг: 0 / 0
29.01.2020, 14:18
    #39919931
Angelo Lagusa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести скрипт на Postgresql
Lonepsycho,

Код: sql
1.
dateadd(month,1,convert(datetime,convert(varchar(2),(month(dateadd(day,2-day(dateadd(day,0,data_issue)),(data_issue)))))+'/1/'+convert(char(4),year(dateadd(day,2-day(dateadd(day,0,data_issue)),(data_issue)))),101)) dateissue


Именно эту строку не могу перевести на Postgresql,
(dateadd(month,1) вместо этого пишу (interval '1' month)
(datatime) перевел на (timestamp)

(month(dateadd(day,2-day(dateadd(day,0,data_issue)) эту строку не могу перевести правильно
...
Рейтинг: 0 / 0
29.01.2020, 14:32
    #39919942
entrypoint
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести скрипт на Postgresql
Angelo Lagusa,

https://postgrespro.ru/docs/postgrespro/12/functions-datetime

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT 
	dt, 
	dt - interval '1 month', 
	dt + interval '1 month', 
	dt - interval '1 day', 
	dt + interval '1 day',
	dt - (dt - interval '1 day'),
	date_part('month', dt)
FROM (VALUES(NOW())) AS a(dt)
...
Рейтинг: 0 / 0
29.01.2020, 14:53
    #39919960
entrypoint
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести скрипт на Postgresql
Angelo Lagusa,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT 
	dt, 
	dt - interval '1 month', 
	dt + interval '1 month', 
	dt - interval '1 day', 
	dt + interval '1 day',
	dt - (dt - interval '1 day'),
	date_part('month', dt),
	dt - ((24 - date_part('hour', dt)) || ' hour''')::interval 
FROM (VALUES(NOW())) AS a(dt)
...
Рейтинг: 0 / 0
29.01.2020, 15:09
    #39919976
entrypoint
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести скрипт на Postgresql
Angelo Lagusa,

Если нужен специфический формат даты для вывода

Код: plsql
1.
SELECT to_char(NOW(), 'DD.MM.YYYY HH24:MI:SS')
...
Рейтинг: 0 / 0
30.01.2020, 11:43
    #39920399
Angelo Lagusa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести скрипт на Postgresql
entrypoint, просто я не могу перевести эту строку на Postgres, в синтаксисе ошибка.
Код: sql
1.
dateadd(month,1,convert(datetime,convert(varchar(2),(month(dateadd(day,2-day(dateadd(day,0,data_issue)),(data_issue)))))+'/1/'+convert(char(4),year(dateadd(day,2-day(dateadd(day,0,data_issue)),(data_issue)))),101)) dateissue



я написал так, но в синтаксие ошибка
Код: sql
1.
interval '1' month + (cast(datatime,cast((month(interval '2-day' day + (data_issue + interval '0' day),(data_issue)))as varchar) +'/1/'+ cast(year(interval '2-day' day + (interval '0' day + data_issue),(data_issue))as varchar))) as dateissue



Можете помочь со скриптом
...
Рейтинг: 0 / 0
30.01.2020, 12:30
    #39920441
entrypoint
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести скрипт на Postgresql
Angelo Lagusa,

Код: plsql
1.
2.
-- NOW() вместо dateissue
SELECT date_trunc('month', NOW())::timestamp + interval '1 month'
...
Рейтинг: 0 / 0
30.01.2020, 12:56
    #39920465
qwwq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести скрипт на Postgresql
Angelo Lagusa,

просто сопоставьте типы и ф-ии, и попробуйте достичь требуемого , а не пытайтесь переводить индусский бред китайским способом

https://www.postgresql.org/docs/current/functions-datetime.html
vs
https://docs.microsoft.com/en-us/sql/t-sql/functions/date-and-time-data-types-and-functions-transact-sql?view=sql-server-ver15

например:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
with d  (data_issue,_NUMBER) as (select date'now',13)
select
	data_issue
	,_NUMBER
	,date_part('day',data_issue)		--day(data_issue)
	,date_part('month',data_issue)		--month( data_issue)
	,date_part('year',data_issue)		--year( data_issue)
	,data_issue + (INTERVAL'1DAY')*_NUMBER as dateaddinterv -- dateadd(day,_NUMBER,data_issue )
	,data_issue + _NUMBER as dateaddint-- dateadd(day,_NUMBER,data_issue )
	, make_date(date_part('year',data_issue)::int,date_part('month',data_issue)::int,date_part('day',data_issue)::int)
	,(data_issue::timestamp - timestamp'2000-01-01') as noYearsButDays
	,data_issue + (INTERVAL'1Year')*date_part('year', (data_issue::timestamp - timestamp'2000-01-01')) dateadd21
	,data_issue + (INTERVAL'1Year')* (date_part('year', data_issue) - date_part('year',date'2000-01-01')) dateadd22
from d



ПС : что делает в мс скл dateadd(day,0,data_issue) ? ничего ? или транкейтит временную компоненту ? или кастит к дню ? судя по описанию -- ровным счётом ничего (сохраняет тип и добавляет 0-й интервал). и зачем тогда эту чушь переносить 1/1 ?
...
Рейтинг: 0 / 0
30.01.2020, 16:26
    #39920574
entrypoint
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести скрипт на Postgresql
Angelo Lagusa,


Это не пример, это решение Вашего вопроса
Код: plsql
1.
2.
-- NOW() вместо dateissue
SELECT date_trunc('month', NOW())::timestamp + interval '1 month'



строка выше эквивалента

Код: sql
1.
SELECT dateadd(month,1,convert(datetime,convert(varchar(2),(month(dateadd(day,2-day(dateadd(day,0,data_issue)),(data_issue)))))+'/1/'+convert(char(4),year(dateadd(day,2-day(dateadd(day,0,data_issue)),(data_issue)))),101)) dateissue
...
Рейтинг: 0 / 0
03.02.2020, 15:42
    #39921873
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести скрипт на Postgresql
Angelo Lagusa
Lonepsycho, по подробнее пж. переписал не работает, не до конца перевел скрипт



так что попо дробнее?

"На Postgresql я написал так, но к сожалению скрипт не работает:"

скрипт так и "пишет": езвени братан, я к сожалению, не работаю?
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Перевести скрипт на Postgresql / 14 сообщений из 14, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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