Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Тип данных в sql 2000  [new]
gumeniuc
Member

Откуда: md
Сообщений: 133
Добрый день. Вопрос собственно таков. Существует ли в sql 2000 формат данных типа dd.mm.yy без времени, ибо datetime и smalldatetime не то.
Иначе говоря, при попытке сравнивать число записанное в datetime(15,11,09) и getdate , пример.
declare @temp datetime  , @curdate datetime
set @temp = '15.11.09'
set @curdate = getdate
if (@temp = @curdate)
  begin
  print ('=')
  end
выводит что числа не равны, т.к. не равны hh.mm.ss
Возможно ли каким-либо образом сравнивать исключительно дату, не учитывая время.
спасибо
15 ноя 09, 11:07    [7930695]     Ответить | Цитировать Сообщить модератору
 Re: Тип данных в sql 2000  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
gumeniuc
Добрый день. Вопрос собственно таков. Существует ли в sql 2000 формат данных типа dd.mm.yy без времени, ибо datetime и smalldatetime не то.
Иначе говоря, при попытке сравнивать число записанное в datetime(15,11,09) и getdate , пример.
declare @temp datetime  , @curdate datetime
set @temp = '15.11.09'
set @curdate = getdate
if (@temp = @curdate)
  begin
  print ('=')
  end
выводит что числа не равны, т.к. не равны hh.mm.ss
Возможно ли каким-либо образом сравнивать исключительно дату, не учитывая время.
спасибо
declare @temp datetime, @curdate datetime;
set @temp = '20091115';
set @curdate = getdate();
if @curdate>=@temp and @curdate<dateadd(day,1,@temp)
 print '='
else
 print '<>';
15 ноя 09, 11:14    [7930701]     Ответить | Цитировать Сообщить модератору
 Re: Тип данных в sql 2000  [new]
iljy
Member

Откуда:
Сообщений: 8711
gumeniuc
Добрый день. Вопрос собственно таков. Существует ли в sql 2000 формат данных типа dd.mm.yy без времени, ибо datetime и smalldatetime не то.
Иначе говоря, при попытке сравнивать число записанное в datetime(15,11,09) и getdate , пример.
declare @temp datetime  , @curdate datetime
set @temp = '15.11.09'
set @curdate = getdate
if (@temp = @curdate)
  begin
  print ('=')
  end
выводит что числа не равны, т.к. не равны hh.mm.ss
Возможно ли каким-либо образом сравнивать исключительно дату, не учитывая время.
спасибо

это называется не формат, а тип данных. Тип DATE появился в 2008. В ранних версиях можно отбросить время у типа datetime(smalldatetime), например так
select dateadd(d, datediff(d,0,getdate()), 0)
15 ноя 09, 12:15    [7930745]     Ответить | Цитировать Сообщить модератору
 Re: Тип данных в sql 2000  [new]
vah
Member

Откуда:
Сообщений: 2649
gumeniuc
Добрый день. Вопрос собственно таков. Существует ли в sql 2000 формат данных типа dd.mm.yy без времени, ибо datetime и smalldatetime не то.
Иначе говоря, при попытке сравнивать число записанное в datetime(15,11,09) и getdate , пример.
declare @temp datetime  , @curdate datetime
set @temp = '15.11.09'
set @curdate = getdate
if (@temp = @curdate)
  begin
  print ('=')
  end
выводит что числа не равны, т.к. не равны hh.mm.ss
Возможно ли каким-либо образом сравнивать исключительно дату, не учитывая время.
спасибо



declare @temp datetime  , @curdate datetime
set @temp = '15.11.09'
set @curdate = getdate
if (CAST(CONVERT(varchar(8), @temp, 112) AS datetime)=CAST(CONVERT(varchar(8), @curdate, 112)  AS datetime)
)
  begin
  print ('=')
  end
15 ноя 09, 17:41    [7931112]     Ответить | Цитировать Сообщить модератору
 Re: Тип данных в sql 2000  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3264
vah,

два недочёта в батче.
set @temp = '15.11.09'

так ненадо никогда делать. в зависимости от языка логина и SET @@language получите неприятнсть в скрипте
CAST(CONVERT(varchar(8), @temp, 112) AS datetime)=
лучше использовать dateadd и datediff, оно быстрее будет работать.
15 ноя 09, 19:02    [7931184]     Ответить | Цитировать Сообщить модератору
 Re: Тип данных в sql 2000  [new]
vah
Member

Откуда:
Сообщений: 2649
set @temp = '15.11.09'

да, лучше так
set @temp = 20091115
15 ноя 09, 22:02    [7931366]     Ответить | Цитировать Сообщить модератору
 Re: Тип данных в sql 2000  [new]
iljy
Member

Откуда:
Сообщений: 8711
vah
set @temp = '15.11.09'

да, лучше так
set @temp = 20091115

так - не лучше;) лучше в кавычки взять
set @temp = '20091115'
15 ноя 09, 22:59    [7931433]     Ответить | Цитировать Сообщить модератору
 Re: Тип данных в sql 2000  [new]
GLocal
Member

Откуда: Москва
Сообщений: 34
Можно и так
if @temp=floor(cast(@curdate as float))
..
16 ноя 09, 04:02    [7931668]     Ответить | Цитировать Сообщить модератору
 Re: Тип данных в sql 2000  [new]
vah
Member

Откуда:
Сообщений: 2649
iljy
vah
set @temp = '15.11.09'

да, лучше так
set @temp = 20091115

так - не лучше;) лучше в кавычки взять
set @temp = '20091115'


Ну кавычки-то...- это и ежу понятно
16 ноя 09, 09:17    [7931839]     Ответить | Цитировать Сообщить модератору
 Re: Тип данных в sql 2000  [new]
gumeniuc
Member

Откуда: md
Сообщений: 133
Всем спасибо за помощь. Всё получилось
17 ноя 09, 15:56    [7940574]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить