Вычесть месяц из даты по столбцу
Всем доброго времени суток, подскажите плз как корректно написать запрос для вычетания\прибавления к искомому столбцу 3ех месяцев(И создание столбца в котором будет указана с какой даты идет отсчет). Столбец в котором прописана дата есть в обоих таблицах и называется «a.time_key», если использовать запрос DateIff или DateADD выдают ошибку.
Запрос следующего вида
a.Camp_code,
a.Camp_name,
a.Oper_profile,
b.ss_1
from «название таблицы» a
left join «название таблицы» b
and a.ban_key=b.ban_key
WHERE DATEDIFF(MONTH, a.time_key, GETDATE())
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Вычесть месяц в cmd файле
Возникла потребность первого числа текущего месяца выполнять файл за предыдущий месяц. С.

Дан файл, содержащий различные даты. Каждая дата – это число, месяц и год. Найти все весенние даты.
Дан файл, содержащий различные даты. Каждая дата – это число, месяц и год. Найти все весенние даты.
Дан файл, содержащий различные даты. Каждая дата — это число, месяц и год. Найти все весенние даты
Дан файл, содержащий различные даты. Каждая дата — это число, месяц и год. Найти все весенние даты
1630 / 1045 / 393
Регистрация: 31.05.2012
Сообщений: 3,674
А cтолбец в котором прописана дата какого хоть типа? Вангую — он имеет не подходящий тип для DateIff или DateADD, строковый например. И коль выдает ошибку не мешало бы здесь точно показать текст сообщения об ошибке
Регистрация: 20.08.2021
Сообщений: 4
Time_key — 01.07.2021 имеет такой формат.
ошибка Ora 00904 «Datediff» : Invalid Identifier
1630 / 1045 / 393
Регистрация: 31.05.2012
Сообщений: 3,674
о-о. При чем здесь oracle в разделе ms sql? И при чем DATEDIFF для oracle? Нет в нем таких функций. И про формат отображения я не спрашивал, а спрашивал про тип поля если что))
1113 / 758 / 183
Регистрация: 27.11.2009
Сообщений: 2,264
Условие в LEFT JOIN не может начинаться с оператора AND
Регистрация: 20.08.2021
Сообщений: 4
Ошибся разделом ), извините. Тип поля date_time если вы об этом.
P.s. по поводу left join да верно, у меня сначало идет другое условие, соединение таблиц у меня работает.
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Дан файл, содержащий различные даты. Каждая дата – это число, месяц и год. Найти все весенние даты
Дан файл, содержащий различные даты. Каждая дата – это число, месяц и год. Найти все весенние даты.
Дан файл, содержащий различные даты. Каждая дата — это число, месяц и год. Найти все весенние даты
Уважаемые, программисты, очень прошу помощи по данным заданиям. Нужно сделать кто какие сможет.
Вычесть дату из даты
Друзья, подскажите, пожалуйста. пример: Клиент родился 26.02.1983. мне нужно узнать сколько.
Вычесть дату из даты
Друзья. Подскажите, пожалуйста: select extract(MINUTE from to_timestamp(‘03.12.18.
Вычесть из одной даты другую
Всем привет, Подскажите как вычесть из одной указанной даты сегодняшнюю. То есть, что бы было.

Вычесть из текущей даты 5 дней
Всем доброго дня! Вопрос такой: есть некий скрипт vbs, который выкачивает с ресурса файлы.
Как вычесть в sql
Чтобы вычесть из значения столбца числового типа какое-либо число, нужно использовать эту операцию в самом запросе, там где мы перечисляем выбираемые поля:
SELECT name, price - 100 FROM products;
Функция DATEADD стр. 1
Функция DATEADD (datepart, number, date) возвращает значение типа datetime, которое получается добавлением к дате date количества интервалов типа datepart, равного number (целое число).
Например, мы можем к заданной дате добавить любое число лет, дней, часов, минут и т. д.
Допустимые значения аргумента datepart приведены ниже в таблице и взяты из электронной документации к Cистема управления реляционными базами данных (СУБД), разработанная корпорацией Microsoft. Язык структурированных запросов) — универсальный компьютерный язык, применяемый для создания, модификации и управления данными в реляционных базах данных. SQL Server — Books On Line (BOL).
Пусть сегодня 28.10.2005, и мы хотим узнать, какой день будет через неделю. Мы можем написать:

Консоль
Выполнить

Консоль
Выполнить
В результате получим одно и то же значение; что-то типа 2005-11-04 00:11:28.683.
Однако мы не можем в этом случае написать:

Консоль
Выполнить
и не потому, что четверть месяца не равна в точности неделе, а потому, что дробная часть значения аргумента datepart отбрасывается, и мы получим 0 вместо одной четвертой и, как следствие, текущий день.

Кроме того, мы можем использовать вместо CURRENT_TIMESTAMP функцию T-SQL (Transact-SQL) — процедурное расширение языка SQL, используемое для программирования на стороне сервера в Microsoft SQL Server и Sybase ASE. T-SQL GETDATE () с тем же самым эффектом. Наличие двух идентичных функций поддерживается, видимо, в ожидании последующего развития стандарта.
Определить, какой будет день через неделю после последнего полета.
Примечание:
В примерах данной главы используется база данных «Аэрофлот». Описание этой схемы и всех остальных схем, используемых в настоящее время на сайте для решения задач, можно найти в Примечании 1.

Консоль
Выполнить
Как вычесть даты в sql
SqlQuery = «SELECT * FROM server_works WHERE work_date > »
+ ТУТ ДАТА НА МЕСЯЦ МЕНЬШЕ ЧЕМ DateTime.Now
+ » ORDER BY work_date DESC»;
Или както можно в sql задать дату на месяц меньше ?
26.01.06 01:33: Перенесено из ‘.NET’
Re: DateTime как получить дату на месяц назад например
| От: | Mckey |
| Дата: | 25.01.06 13:37 |
| Оценка: |
Здравствуйте, Аноним, Вы писали:
А>SqlQuery = «SELECT * FROM server_works WHERE work_date > »
А>+ ТУТ ДАТА НА МЕСЯЦ МЕНЬШЕ ЧЕМ DateTime.Now
А>+ » ORDER BY work_date DESC»;
А>Или както можно в sql задать дату на месяц меньше ?
Тут от самого sql ничего не зависит — надо знать какие из функций реализованы в твоей базе данных. Для Oracle и MS SQL они могут быть разные.
Делай добро и бросай его в воду.
Re: DateTime как получить дату на месяц назад например
| От: | Vitaliy81 |
| Дата: | 25.01.06 13:44 |
| Оценка: |
Здравствуйте, Аноним, Вы писали:
А>SqlQuery = «SELECT * FROM server_works WHERE work_date > »
А>+ ТУТ ДАТА НА МЕСЯЦ МЕНЬШЕ ЧЕМ DateTime.Now
А>+ » ORDER BY work_date DESC»;
А>Или както можно в sql задать дату на месяц меньше ?
А какая дата будет на месяц раньше 30 марта?
Re: DateTime как получить дату на месяц назад например
| От: | alex_tim |
| Дата: | 25.01.06 13:57 |
| Оценка: |
Здравствуйте, Аноним, Вы писали:
А>SqlQuery = «SELECT * FROM server_works WHERE work_date > »
А>+ ТУТ ДАТА НА МЕСЯЦ МЕНЬШЕ ЧЕМ DateTime.Now
А>+ » ORDER BY work_date DESC»;
А>Или както можно в sql задать дату на месяц меньше ?
Привет. Есть такая функция в SQL dateadd. Вот например если ты хочешь вычесть один день из даты
Пример:
declare @d as datetime
select @d = ‘2/1/2005’
dateadd(day, -1 ,@d)
Если хочешь вычесть один месяц, то соответственно dateadd(month, -1 ,@d)
И не надо беспокоиться по поводу высокосных не высокосных годов, а так же февраля месяца и все такое. Вообщем пробуй.
Re: DateTime как получить дату на месяц назад например
| От: | algol | about:blank |
| Дата: | 25.01.06 14:01 | |
| Оценка: |
Здравствуйте, Аноним, Вы писали:
SqlQuery = "SELECT * FROM server_works WHERE work_date > '" + DateTime.Now.AddMonths(-1).ToString("yyyy-MM-dd") + + "' ORDER BY work_date DESC";
Re[2]: DateTime как получить дату на месяц назад например
| От: | Alexey Frolov |
| Дата: | 26.01.06 10:03 |
| Оценка: |
Здравствуйте, algol, Вы писали:
A>Здравствуйте, Аноним, Вы писали:
A>
A>SqlQuery = "SELECT * FROM server_works WHERE work_date > '" A> + DateTime.Now.AddMonths(-1).ToString("yyyy-MM-dd") + A> + "' ORDER BY work_date DESC"; A>
По правилам хорошего тона правильно пользоваться одним источником даты во всем проекте. Либо это будет СУБД сервер, либо Application сервер (это образно выражаясь, не уверен что привел исключительно правильные термины, но смысл думаю понятен) и в общем случае эти сервера разные.
Как здесь уже правильно сказали, можно воспользоваться функцией dateadd для MS SQL, для Oracle есть функция ADD_MONTH, все зависит от СУБД.
P.S. Не имею ничего против приведенного выше кода, просто так мои комметарии. Бывает так что нужно запустить несколько одинаковых AppServers которые работают с одной базой, вот здесь и проявляются недостатки этого метода.
