powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Проблема с датами.
8 сообщений из 58, страница 3 из 3
Проблема с датами.
    #39765326
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Непонятно, зачем тут прибавляют '0101'.
Можно по-другому. D находится в текущем году, если
Код: sql
1.
2.
    D>=DATEADD(YEAR,DATEDIFF(YEAR,0,CURRENT_TIMESTAMP),0)
AND D< DATEADD(YEAR,1+DATEDIFF(YEAR,0,CURRENT_TIMESTAMP),0)
...
Рейтинг: 0 / 0
Проблема с датами.
    #39765487
Юлик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Благодарю всех,завтра на работе попробую
...
Рейтинг: 0 / 0
Проблема с датами.
    #39766132
Юлик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вообщем,вот такой вариант подошел,все остальные выводили данные не попадающие в нынешний год..почему то
Код: sql
1.
2.
   select * from rem where DATEADD(YEAR,DATEDIFF(YEAR,0,getdate()),0) >=DATEADD(YEAR,DATEDIFF(YEAR,0,data_begin),0)
AND DATEADD(YEAR,DATEDIFF(YEAR,0,getdate()),0)< DATEADD(YEAR,1+DATEDIFF(YEAR,0,data_end),0)

Юлик,
...
Рейтинг: 0 / 0
Проблема с датами.
    #39766144
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Условие должно быть SARGable!
Если вам это не нужно (??), делайте как хотите!
...
Рейтинг: 0 / 0
Проблема с датами.
    #39766279
Юлик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iapУсловие должно быть SARGable!
Если вам это не нужно (??), делайте как хотите!
там впереди 3 ключа еще идут
...
Рейтинг: 0 / 0
Проблема с датами.
    #39766636
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЮликiapУсловие должно быть SARGable!
Если вам это не нужно (??), делайте как хотите!
там впереди 3 ключа еще идутЗачем делать плохо, если сделать хорошо занимает такое же время, и код получается не больше и не сложнее?
...
Рейтинг: 0 / 0
Проблема с датами.
    #39767324
Юлик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
мой вопрос закрыт,так как оказалось,в задаче бралась не сегодняшняя дата и из неё год вычленялся,а нужно было год вводить ручками(т.е переменной он уже должен быть присвоен). Пришел "оптимизатор" и подсказал такой код( при том,что, если использовать getdate() ,то я правильно раньше думал)..
Код: sql
1.
2.
3.
4.
5.
6.
declare @year int
declare @data_begin as datetime,@data_end as datetime
set @year=2019
set @data_begin=datefrompart(@year)+'0101'
set @data_end=datefrompart(@year)+'1231'
select * from rem where data_end<=@data_begin and data_begin>=@data_end
...
Рейтинг: 0 / 0
Проблема с датами.
    #39767415
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юликмой вопрос закрыт,так как оказалось,в задаче бралась не сегодняшняя дата и из неё год вычленялся,а нужно было год вводить ручками(т.е переменной он уже должен быть присвоен). Пришел "оптимизатор" и подсказал такой код( при том,что, если использовать getdate() ,то я правильно раньше думал)..
Код: sql
1.
2.
3.
4.
5.
6.
declare @year int
declare @data_begin as datetime,@data_end as datetime
set @year=2019
set @data_begin=datefrompart(@year)+'0101'
set @data_end=datefrompart(@year)+'1231'
select * from rem where data_end<=@data_begin and data_begin>=@data_end

Не в 2019 году:
Код: sql
1.
2.
DECLARE @Year CHAR(4)='2019';
SELECT * FROM rem WHERE data_end<@Year OR data_begin> DATEADD(YEAR,1,@Year);


Чтобы не было недопонимания, см. Строковый формат без разделителей
авторСтрока только из четырех разрядов интерпретируется как год. Число и месяц принимают значение 1 января.Формат без разделителей не требует явного приведения в DATETIME
...
Рейтинг: 0 / 0
8 сообщений из 58, страница 3 из 3
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Проблема с датами.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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