Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Выбрать записи за текущий год  [new]
Anna________________
Guest
В таблице есть поле с датами. Нужно выбрать записи с датами на текущий год. Как это сделать?
Спасибо
25 май 10, 15:54    [8831220]     Ответить | Цитировать Сообщить модератору
 Re: Выбрать записи за текущий год  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
...
where [В таблице есть поле с датами] > '20100101'
25 май 10, 15:57    [8831252]     Ответить | Цитировать Сообщить модератору
 Re: Выбрать записи за текущий год  [new]
Anna________________
Guest
а чтобы не менять дату каждый год?
25 май 10, 16:00    [8831275]     Ответить | Цитировать Сообщить модератору
 Re: Выбрать записи за текущий год  [new]
--__Александр__--
Member

Откуда:
Сообщений: 2631
getdate() вам в помощь !!!
25 май 10, 16:01    [8831289]     Ответить | Цитировать Сообщить модератору
 Re: Выбрать записи за текущий год  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Anna________________
а чтобы не менять дату каждый год?
Нужно вычислить первый день текущего года и подставить его в условие.
25 май 10, 16:01    [8831294]     Ответить | Цитировать Сообщить модератору
 Re: Выбрать записи за текущий год  [new]
Anna________________
Guest
а как это сделать?
25 май 10, 16:06    [8831361]     Ответить | Цитировать Сообщить модератору
 Re: Выбрать записи за текущий год  [new]
nicksh
Member

Откуда: Москва (иногда Нижний Новгород)
Сообщений: 50
Anna________________
а чтобы не менять дату каждый год?

...
where [В таблице есть поле с датами] > convert(varchar(4), getdate(), 112) + '0101'
25 май 10, 16:07    [8831376]     Ответить | Цитировать Сообщить модератору
 Re: Выбрать записи за текущий год  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Anna________________
а как это сделать?
Открыть в документации раздел Date and Time Data Types and Functions (Transact-SQL), выбрать нужные функции и составить необходимое условие.
25 май 10, 16:08    [8831390]     Ответить | Цитировать Сообщить модератору
 Re: Выбрать записи за текущий год  [new]
Anna________________
Guest
nicksh - Спасибо!!!
25 май 10, 16:10    [8831416]     Ответить | Цитировать Сообщить модератору
 Re: Выбрать записи за текущий год  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
Можно просто
where
year([myfield]) = year(getdate())
25 май 10, 16:11    [8831421]     Ответить | Цитировать Сообщить модератору
 Re: Выбрать записи за текущий год  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
SomewhereSomehow
Можно просто
where
year([myfield]) = year(getdate())
Ни в коем случае!
Можно так:
WHERE DateField>=DATEADD(YEAR,  DATEDIFF(YEAR,0, CURRENT_TIMESTAMP),0)
  AND DateField< DATEADD(YEAR,1+DATEDIFF(YEAR,0, CURRENT_TIMESTAMP),0)
25 май 10, 16:19    [8831550]     Ответить | Цитировать Сообщить модератору
 Re: Выбрать записи за текущий год  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
iap
SomewhereSomehow
Можно просто
where
year([myfield]) = year(getdate())
Ни в коем случае!
Можно так:
WHERE DateField>=DATEADD(YEAR,  DATEDIFF(YEAR,0, CURRENT_TIMESTAMP),0)
  AND DateField< DATEADD(YEAR,1+DATEDIFF(YEAR,0, CURRENT_TIMESTAMP),0)


Это потому это? Потому что невозможно будет использовать индекс и аргументы поиска? Ну так никто ж не говорит насколько таблица большая, зачем заранее извращаться =)
25 май 10, 16:21    [8831584]     Ответить | Цитировать Сообщить модератору
 Re: Выбрать записи за текущий год  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
SomewhereSomehow
iap
SomewhereSomehow
Можно просто
where
year([myfield]) = year(getdate())
Ни в коем случае!
Можно так:
WHERE DateField>=DATEADD(YEAR,  DATEDIFF(YEAR,0, CURRENT_TIMESTAMP),0)
  AND DateField< DATEADD(YEAR,1+DATEDIFF(YEAR,0, CURRENT_TIMESTAMP),0)


Это потому это? Потому что невозможно будет использовать индекс и аргументы поиска? Ну так никто ж не говорит насколько таблица большая, зачем заранее извращаться =)
Извращение - это писать заранее кривые запросы, которые вообще никогда - ни на больших, ни на малых таблицах - не смогут нормально использовать индексы.
25 май 10, 16:23    [8831602]     Ответить | Цитировать Сообщить модератору
 Re: Выбрать записи за текущий год  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
SomewhereSomehow
Это потому это? Потому что невозможно будет использовать индекс и аргументы поиска?
Именно поэтому. Сегодня индекса нет - завтра появится. Зачем делать лишнюю работу?
SomewhereSomehow
Ну так никто ж не говорит насколько таблица большая, зачем заранее извращаться =)
Не знаю, зачем Вы предлагаете извращение под названием "говнокод".
25 май 10, 16:25    [8831623]     Ответить | Цитировать Сообщить модератору
 Re: Выбрать записи за текущий год  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
Гавриленко Сергей Алексеевич
SomewhereSomehow
iap
SomewhereSomehow
Можно просто
where
year([myfield]) = year(getdate())
Ни в коем случае!
Можно так:
WHERE DateField>=DATEADD(YEAR,  DATEDIFF(YEAR,0, CURRENT_TIMESTAMP),0)
  AND DateField< DATEADD(YEAR,1+DATEDIFF(YEAR,0, CURRENT_TIMESTAMP),0)


Это потому это? Потому что невозможно будет использовать индекс и аргументы поиска? Ну так никто ж не говорит насколько таблица большая, зачем заранее извращаться =)
Извращение - это писать заранее кривые запросы, которые вообще никогда - ни на больших, ни на малых таблицах - не смогут нормально использовать индексы.

Извращение это оптимизировать то, что не нуждается в оптимизации в ущерб читабельности кода.
25 май 10, 16:27    [8831664]     Ответить | Цитировать Сообщить модератору
 Re: Выбрать записи за текущий год  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
SomewhereSomehow
Извращение это оптимизировать то, что не нуждается в оптимизации в ущерб читабельности кода.
Ха-ха, уже смешно.
25 май 10, 16:28    [8831676]     Ответить | Цитировать Сообщить модератору
 Re: Выбрать записи за текущий год  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
iap
SomewhereSomehow
Это потому это? Потому что невозможно будет использовать индекс и аргументы поиска?
Именно поэтому. Сегодня индекса нет - завтра появится. Зачем делать лишнюю работу?
SomewhereSomehow
Ну так никто ж не говорит насколько таблица большая, зачем заранее извращаться =)
Не знаю, зачем Вы предлагаете извращение под названием "говнокод".

Вот когда появится, тогда и будет о чем говорить...
Касательно говнокода, если требуется внести какие-то изменнеия в код написаный энтузиастами оптимизации на пустом месте - вот тогда и пригождается это словечко. Спорить с вами не буду, почитайте с.макконела на досуге, не помню как книга называется, но лучше него про это не скажешь...
25 май 10, 16:36    [8831757]     Ответить | Цитировать Сообщить модератору
 Re: Выбрать записи за текущий год  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
SomewhereSomehow
Вот когда появится, тогда и будет о чем говорить...
Касательно говнокода, если требуется внести какие-то изменнеия в код написаный энтузиастами оптимизации на пустом месте - вот тогда и пригождается это словечко. Спорить с вами не буду, почитайте с.макконела на досуге, не помню как книга называется, но лучше него про это не скажешь...
Угу. А некоторый код, написаный энтузиастами "читабельного кода" даже править не приходится - он просто тупо не работает. Зато читабельный, ага.

В общем, про читабельность кода и прочую лабуду вы пользователям и начальству будете рассказывать, когда они придут и поинтересуются, через сколько лет отработает та или иная кнопка.
25 май 10, 16:40    [8831782]     Ответить | Цитировать Сообщить модератору
 Re: Выбрать записи за текущий год  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
Гавриленко Сергей Алексеевич
SomewhereSomehow
Вот когда появится, тогда и будет о чем говорить...
Касательно говнокода, если требуется внести какие-то изменнеия в код написаный энтузиастами оптимизации на пустом месте - вот тогда и пригождается это словечко. Спорить с вами не буду, почитайте с.макконела на досуге, не помню как книга называется, но лучше него про это не скажешь...
Угу. А некоторый код, написаный энтузиастами "читабельного кода" даже править не приходится - он просто тупо не работает. Зато читабельный, ага.

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

Приведите пример когда приведенная выше конструкция не будет работать на небольших таблицах.
25 май 10, 16:42    [8831799]     Ответить | Цитировать Сообщить модератору
 Re: Выбрать записи за текущий год  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
SomewhereSomehow
Приведите пример когда приведенная выше конструкция не будет работать на небольших таблицах.
Мне достаточно того, что будет полный скан на любых.

З.Ы. А в вашем понимании что есть небольшая?
25 май 10, 16:46    [8831836]     Ответить | Цитировать Сообщить модератору
 Re: Выбрать записи за текущий год  [new]
Я
Guest
Гавриленко Сергей Алексеевич
...
where [В таблице есть поле с датами] > '20100101'


Первое число в выборку не попадает
25 май 10, 16:54    [8831939]     Ответить | Цитировать Сообщить модератору
 Re: Выбрать записи за текущий год  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
Гавриленко Сергей Алексеевич
SomewhereSomehow
Приведите пример когда приведенная выше конструкция не будет работать на небольших таблицах.
Мне достаточно того, что будет полный скан на любых.
З.Ы. А в вашем понимании что есть небольшая?

Да, совершенно верно будет скан, но кто сказал что в данном случае это плохо?..
Дело в том, что не вижу смысла шапкозакидательства с крикакми "ни в коем случае", кроме как продемонстрировать, что, дескать , я крут и знаю как работает оптимизатор. Если уж с реальной целью помочь человеку, ну возьми допиши что в таком варианте по данному столбцу будет невозможно использование индекса...
З.Ы. Например, таблица с историей должностей сторудников средней организации не большая и не будет большой в обозримые сто лет...
25 май 10, 16:57    [8831984]     Ответить | Цитировать Сообщить модератору
 Re: Выбрать записи за текущий год  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
SomewhereSomehow
Гавриленко Сергей Алексеевич
SomewhereSomehow
Приведите пример когда приведенная выше конструкция не будет работать на небольших таблицах.
Мне достаточно того, что будет полный скан на любых.
З.Ы. А в вашем понимании что есть небольшая?

Да, совершенно верно будет скан, но кто сказал что в данном случае это плохо?..
Дело в том, что не вижу смысла шапкозакидательства с крикакми "ни в коем случае", кроме как продемонстрировать, что, дескать , я крут и знаю как работает оптимизатор. Если уж с реальной целью помочь человеку, ну возьми допиши что в таком варианте по данному столбцу будет невозможно использование индекса...
З.Ы. Например, таблица с историей должностей сторудников средней организации не большая и не будет большой в обозримые сто лет...
Если вы не видели таблиц размером более 100 записей и не умеете с ними работать, это не повод учить других работать так же. Это первое.

Второе. Я вам на двух записях в год сценарий придумаю, когда кто-то будет на пол дня блокировать записи за предыдущий год ("а чо, с ними же никто не работает, они же старые"), а ваш скан будет послушно ждать. И не надо меня по пользу nolock'а парить.
25 май 10, 17:02    [8832027]     Ответить | Цитировать Сообщить модератору
 Re: Выбрать записи за текущий год  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
Гавриленко Сергей Алексеевич
Если вы не видели таблиц размером более 100 записей и не умеете с ними работать
Хамство....пожалуй, оставлю без комментариев, это первое...

Гавриленко Сергей Алексеевич
Второе. Я вам на двух записях в год сценарий придумаю, когда кто-то будет на пол дня блокировать записи за предыдущий год ("а чо, с ними же никто не работает, они же старые"), а ваш скан будет послушно ждать. И не надо меня по пользу nolock'а парить.
Парить вас никто не собирается. Давайте, придумайте!
Потом, когда вы придумаете, я придумаю свой сценарий ("с блэкджеком и шлюхами") при котором ваш вариант запроса будет послушно ждать.
25 май 10, 17:25    [8832308]     Ответить | Цитировать Сообщить модератору
 Re: Выбрать записи за текущий год  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
SomewhereSomehow

Потом, когда вы придумаете, я придумаю свой сценарий ("с блэкджеком и шлюхами") при котором ваш вариант запроса будет послушно ждать.
Этот сценарий меня должен убедить, что "красивый" говнокод лучше "некрасивого" неговнокода? Попробуйте.

Сообщение было отредактировано: 25 май 10, 17:31
25 май 10, 17:30    [8832361]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить