Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Как вычислить 1 января текущего года?  [new]
KeshaRu
Member

Откуда:
Сообщений: 5
Т.е.
SELECT поле FROM табл WHERE дата > 01/01/????
10 дек 08, 14:24    [6550767]     Ответить | Цитировать Сообщить модератору
 Re: Как вычислить 1 января текущего года?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
KeshaRu
Т.е.
SELECT поле FROM табл WHERE дата > 01/01/????



дату так в любом случае не указывают..

текущий год

select datepart(year,getdate())
10 дек 08, 14:27    [6550786]     Ответить | Цитировать Сообщить модератору
 Re: Как вычислить 1 января текущего года?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
select cast( datepart(year,getdate()) as varchar(4))+'0101'
select cast( cast( datepart(year,getdate()) as varchar(4))+'0101' as datetime)
10 дек 08, 14:28    [6550805]     Ответить | Цитировать Сообщить модератору
 Re: Как вычислить 1 января текущего года?  [new]
KeshaRu
Member

Откуда:
Сообщений: 5
Winnipuh

дату так в любом случае не указывают..
текущий год
select datepart(year,getdate())


Да, это я торопился вопрос задать :-)
SELECT поле FROM табл WHERE дата > '????0101'

Я так понимаю, это
select datepart(year,getdate())[/quot]
аналогично этому
year(GETDATE())
т.е. в результате мы получаем 2008 на сегодня. это не проходит. нужно 20080101
10 дек 08, 14:32    [6550837]     Ответить | Цитировать Сообщить модератору
 Re: Как вычислить 1 января текущего года?  [new]
1
Guest
year(GETDATE())-1
10 дек 08, 14:54    [6551042]     Ответить | Цитировать Сообщить модератору
 Re: Как вычислить 1 января текущего года?  [new]
iap
Member

Откуда: Москва
Сообщений: 47194
SELECT CAST(DATENAME(YEAR, GETDATE()) AS DATETIME);
10 дек 08, 14:54    [6551047]     Ответить | Цитировать Сообщить модератору
 Re: Как вычислить 1 января текущего года?  [new]
KeshaRu
Member

Откуда:
Сообщений: 5
Так работает:
select cast( cast( datepart(year,getdate()) as varchar(4))+'0101' as datetime)

Спасибо!
10 дек 08, 14:56    [6551066]     Ответить | Цитировать Сообщить модератору
 Re: Как вычислить 1 января текущего года?  [new]
iap
Member

Откуда: Москва
Сообщений: 47194
SELECT поле FROM табл WHERE дата >= DATENAME(YEAR, GETDATE());
10 дек 08, 14:56    [6551071]     Ответить | Цитировать Сообщить модератору
 Re: Как вычислить 1 января текущего года?  [new]
KeshaRu
Member

Откуда:
Сообщений: 5
Так тоже:
SELECT CAST(DATENAME(YEAR, GETDATE()) AS DATETIME);
10 дек 08, 14:58    [6551089]     Ответить | Цитировать Сообщить модератору
 Re: Как вычислить 1 января текущего года?  [new]
KeshaRu
Member

Откуда:
Сообщений: 5
И самый короткий вариант тоже работает
DATENAME(YEAR, GETDATE())
:-)
Спасибо всем!
10 дек 08, 15:00    [6551112]     Ответить | Цитировать Сообщить модератору
 Re: Как вычислить 1 января текущего года?  [new]
1
Guest
YEAR(GETDATE())
10 дек 08, 15:02    [6551127]     Ответить | Цитировать Сообщить модератору
 Re: Как вычислить 1 января текущего года?  [new]
NIIIK
Member

Откуда: Россия, Ростовская область, г. Таганрог
Сообщений: 1310
select dateadd(year, datediff(year, 0, getdate()), 0)
10 дек 08, 15:30    [6551387]     Ответить | Цитировать Сообщить модератору
 Re: Как вычислить 1 января текущего года?  [new]
MsDatabaseru
Member

Откуда: Hobby.MsDatabase.ru
Сообщений: 10938
select DateSerial(year(somedate), 1, 1)
удобная функция которая весьма часто пригождается:
CREATE  FUNCTION dbo.DateSerial
-- DateSerial(year, month, day) vb fn analog

	(
	@year int ,
	@month int,
	@day int
	)
RETURNS datetime
with SCHEMABINDING
AS
	BEGIN
declare @date datetime
set @date = CAST(convert(varchar,@year) + right('0'+convert(varchar(2),@month), 2) + right('0'+convert(varchar(2),@day), 2) as datetime)

	RETURN  @date
	END
10 дек 08, 16:18    [6551784]     Ответить | Цитировать Сообщить модератору
 Re: Как вычислить 1 января текущего года?  [new]
iap
Member

Откуда: Москва
Сообщений: 47194
MsDatabaseru
select DateSerial(year(somedate), 1, 1)
удобная функция которая весьма часто пригождается:
CREATE  FUNCTION dbo.DateSerial
-- DateSerial(year, month, day) vb fn analog

	(
	@year int ,
	@month int,
	@day int
	)
RETURNS datetime
with SCHEMABINDING
AS
	BEGIN
declare @date datetime
set @date = CAST(convert(varchar,@year) + right('0'+convert(varchar(2),@month), 2) + right('0'+convert(varchar(2),@day), 2) as datetime)

	RETURN  @date
	END
SELECT CAST(STR(10000*@year+100*@month+@day) AS DATETIME)
А функция зачем? Для торможения?
10 дек 08, 16:23    [6551844]     Ответить | Цитировать Сообщить модератору
 Re: Как вычислить 1 января текущего года?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
конкурс на самое сложное решение

предлагаю вместо функции (см. выше) сделать процедурой и добавить транзакцию
10 дек 08, 16:54    [6552142]     Ответить | Цитировать Сообщить модератору
 Re: Как вычислить 1 января текущего года?  [new]
MsDatabaseru
Member

Откуда: Hobby.MsDatabase.ru
Сообщений: 10938
iap,
спасибо, красивое решение, возьму на вооружение
10 дек 08, 17:02    [6552219]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Как вычислить 1 января текущего года?  [new]
Лысёк
Member

Откуда:
Сообщений: 127
Чё-то у меня ни один из примеров не работает: то ошибка синтаксиса, то "неопределенная функция GetDate"
8 авг 16, 12:00    [19515048]     Ответить | Цитировать Сообщить модератору
 Re: Как вычислить 1 января текущего года?  [new]
Лысёк
Member

Откуда:
Сообщений: 127
Хотя я в аксцсессе делаю
8 авг 16, 12:01    [19515054]     Ответить | Цитировать Сообщить модератору
 Re: Как вычислить 1 января текущего года?  [new]
iap
Member

Откуда: Москва
Сообщений: 47194
Первый день этого года:

SELECT CAST(STR(YEAR(CURRENT_TIMESTAMP)) AS DATETIME)


В отличие от вариантов с DATENAME() этот можно использовать в детерминированных UDF.
При сравнении с полем типа DATETIME функция CAST() необязателена благодаря неявному преобразованию типов.
8 авг 16, 12:28    [19515172]     Ответить | Цитировать Сообщить модератору
 Re: Как вычислить 1 января текущего года?  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4538
iap
Первый день этого года:

Вопрос был про 1-е января.
Может быть я туплю, но решение мне кажется достаточно простым

SELECT CONVERT(datetime,CAST(YEAR(GETDATE()) AS NVARCHAR(4)) + '0101',112)
8 авг 16, 12:36    [19515198]     Ответить | Цитировать Сообщить модератору
 Re: Как вычислить 1 января текущего года?  [new]
iap
Member

Откуда: Москва
Сообщений: 47194
SQL2008
iap
Первый день этого года:

Вопрос был про 1-е января.
Открою страшную тайну!
Год начинается 1 января!!!

Предложенное мною решение основано на строковом формате без разделителей, строка из 4-х разрядов.
Иначе говоря, сплошные стандартные преобразования и функции.
8 авг 16, 12:47    [19515241]     Ответить | Цитировать Сообщить модератору
 Re: Как вычислить 1 января текущего года?  [new]
iljy
Member

Откуда:
Сообщений: 8711
Без преобразований строк

select DATEADD(yy, year(getdate()) - 1900, 0)
8 авг 16, 12:51    [19515259]     Ответить | Цитировать Сообщить модератору
 Re: Как вычислить 1 января текущего года?  [new]
iap
Member

Откуда: Москва
Сообщений: 47194
iljy
Без преобразований строк

select DATEADD(yy, year(getdate()) - 1900, 0)
SELECT DATEADD(YEAR,DATEDIFF(YEAR,0,CURRENT_TIMESTAMP),0);
8 авг 16, 12:53    [19515276]     Ответить | Цитировать Сообщить модератору
 Re: Как вычислить 1 января текущего года?  [new]
Лысёк
Member

Откуда:
Сообщений: 127
все равно либо ошибка синтаксиса либо "неопределенная функция getdate" - везде
8 авг 16, 14:55    [19515987]     Ответить | Цитировать Сообщить модератору
 Re: Как вычислить 1 января текущего года?  [new]
o-o
Guest
Лысёк
все равно либо ошибка синтаксиса либо "неопределенная функция getdate" - везде

все равно Аксесс <> SQL Server,
это даже не Оракл и не Терадата.
вы что, за это время не нашли в гугле Now для аксесса?
8 авг 16, 15:07    [19516065]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить