Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Топик располагается на нескольких страницах: [1] 2 вперед Ctrl→ все |
KeshaRu Member Откуда: Сообщений: 5 |
Т.е. SELECT поле FROM табл WHERE дата > 01/01/???? |
10 дек 08, 14:24 [6550767] Ответить | Цитировать Сообщить модератору |
Winnipuh Member [заблокирован] Откуда: Київ Сообщений: 10428 |
дату так в любом случае не указывают.. текущий год select datepart(year,getdate()) |
||
10 дек 08, 14:27 [6550786] Ответить | Цитировать Сообщить модератору |
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] Ответить | Цитировать Сообщить модератору |
KeshaRu Member Откуда: Сообщений: 5 |
Да, это я торопился вопрос задать :-) SELECT поле FROM табл WHERE дата > '????0101' Я так понимаю, это select datepart(year,getdate())[/quot] аналогично этому year(GETDATE()) т.е. в результате мы получаем 2008 на сегодня. это не проходит. нужно 20080101 |
||
10 дек 08, 14:32 [6550837] Ответить | Цитировать Сообщить модератору |
1
Guest |
year(GETDATE())-1 |
10 дек 08, 14:54 [6551042] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47047 |
SELECT CAST(DATENAME(YEAR, GETDATE()) AS DATETIME); |
10 дек 08, 14:54 [6551047] Ответить | Цитировать Сообщить модератору |
KeshaRu Member Откуда: Сообщений: 5 |
Так работает: select cast( cast( datepart(year,getdate()) as varchar(4))+'0101' as datetime) Спасибо! |
10 дек 08, 14:56 [6551066] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47047 |
SELECT поле FROM табл WHERE дата >= DATENAME(YEAR, GETDATE()); |
10 дек 08, 14:56 [6551071] Ответить | Цитировать Сообщить модератору |
KeshaRu Member Откуда: Сообщений: 5 |
Так тоже: SELECT CAST(DATENAME(YEAR, GETDATE()) AS DATETIME); |
10 дек 08, 14:58 [6551089] Ответить | Цитировать Сообщить модератору |
KeshaRu Member Откуда: Сообщений: 5 |
И самый короткий вариант тоже работает DATENAME(YEAR, GETDATE()) :-) Спасибо всем! |
10 дек 08, 15:00 [6551112] Ответить | Цитировать Сообщить модератору |
1
Guest |
YEAR(GETDATE()) |
10 дек 08, 15:02 [6551127] Ответить | Цитировать Сообщить модератору |
NIIIK Member Откуда: Россия, Ростовская область, г. Таганрог Сообщений: 1295 |
select dateadd(year, datediff(year, 0, getdate()), 0) |
10 дек 08, 15:30 [6551387] Ответить | Цитировать Сообщить модератору |
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] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47047 |
SELECT CAST(STR(10000*@year+100*@month+@day) AS DATETIME)А функция зачем? Для торможения? |
||
10 дек 08, 16:23 [6551844] Ответить | Цитировать Сообщить модератору |
Winnipuh Member [заблокирован] Откуда: Київ Сообщений: 10428 |
конкурс на самое сложное решение ![]() предлагаю вместо функции (см. выше) сделать процедурой и добавить транзакцию |
10 дек 08, 16:54 [6552142] Ответить | Цитировать Сообщить модератору |
MsDatabaseru Member Откуда: Hobby.MsDatabase.ru Сообщений: 10938 |
iap, спасибо, красивое решение, возьму на вооружение |
10 дек 08, 17:02 [6552219] Ответить | Цитировать Сообщить модератору |
Между сообщениями интервал более 1 года. |
Лысёк Member Откуда: Сообщений: 112 |
Чё-то у меня ни один из примеров не работает: то ошибка синтаксиса, то "неопределенная функция GetDate" |
8 авг 16, 12:00 [19515048] Ответить | Цитировать Сообщить модератору |
Лысёк Member Откуда: Сообщений: 112 |
Хотя я в аксцсессе делаю |
8 авг 16, 12:01 [19515054] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47047 |
Первый день этого года:SELECT CAST(STR(YEAR(CURRENT_TIMESTAMP)) AS DATETIME) В отличие от вариантов с DATENAME() этот можно использовать в детерминированных UDF. При сравнении с полем типа DATETIME функция CAST() необязателена благодаря неявному преобразованию типов. |
8 авг 16, 12:28 [19515172] Ответить | Цитировать Сообщить модератору |
SQL2008 Member Откуда: Москва Сообщений: 4392 |
Вопрос был про 1-е января. Может быть я туплю, но решение мне кажется достаточно простым SELECT CONVERT(datetime,CAST(YEAR(GETDATE()) AS NVARCHAR(4)) + '0101',112) |
||
8 авг 16, 12:36 [19515198] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47047 |
Год начинается 1 января!!! Предложенное мною решение основано на строковом формате без разделителей, строка из 4-х разрядов. Иначе говоря, сплошные стандартные преобразования и функции. |
||||
8 авг 16, 12:47 [19515241] Ответить | Цитировать Сообщить модератору |
iljy Member Откуда: Сообщений: 8711 |
Без преобразований строкselect DATEADD(yy, year(getdate()) - 1900, 0) |
8 авг 16, 12:51 [19515259] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47047 |
SELECT DATEADD(YEAR,DATEDIFF(YEAR,0,CURRENT_TIMESTAMP),0); |
||
8 авг 16, 12:53 [19515276] Ответить | Цитировать Сообщить модератору |
Лысёк Member Откуда: Сообщений: 112 |
все равно либо ошибка синтаксиса либо "неопределенная функция getdate" - везде |
8 авг 16, 14:55 [19515987] Ответить | Цитировать Сообщить модератору |
o-o
Guest |
все равно Аксесс <> SQL Server, это даже не Оракл и не Терадата. вы что, за это время не нашли в гугле Now для аксесса? |
||
8 авг 16, 15:07 [19516065] Ответить | Цитировать Сообщить модератору |
Топик располагается на нескольких страницах: [1] 2 вперед Ctrl→ все |
Все форумы / Microsoft SQL Server | ![]() |