Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS SQL Server > Дата + Дата в analizer


Автор: adamant 8.5.2006, 01:42
написал на php теперь надо на sql smile
Код

$sql = mssq_query("SELECT bloc_count,bloc_date,autounblock from MEMB_INFO where bloc_code = 1 and mail_chek = 1");
$row = mssql_fetch_row( $sql );
$outmydate = strtotime($row[3]);
$dayadd = $row[2]*7;
        if ($row[6] == '1')
    {
         $unblockdate  = mktime(0,0,0,date("m",$outmydate),date("d",$outmydate)+$dayadd,date("Y",$outmydate));
         echo date("d.m.Y", $unblockdate);
     }

но суть прогрвммы на mssql такая:
1. загрузить данные
2. получить текущую дату
3. если дата совпадает с date("d.m.Y", $unblockdate); то сделать Update значения в DB...

помогите пожалуйста. как это изобразить на SQL...  smile  smile 

Автор: boevik 8.5.2006, 09:54
Чего сделать то надо? 

Автор: adamant 8.5.2006, 10:43
$outmydate = strtotime($row[3]);    
$dayadd = $row[2]*7;    
$unblockdate  = mktime(0,0,0,date("m",$outmydate),date("d",$outmydate)+$dayadd,date("Y",$outmydate));
        if (date(D.M.Y, $unblockdate) == date(D.M.Y))    
    {    
         UPDATE memb_info SET bloc_code=0, autounblock=0 unban=0 WHERE bloc_code =1
}

токо на sql 

Автор: Vit 8.5.2006, 15:50
Цитата(adamant @  7.5.2006,  16:42 Найти цитируемый пост)
1. загрузить данные


В контексте самого MS SQL Server абсолютно не понятный термин, нет такого понятия как "загрузить данные" для MS SQL Server, наверное вы имеете ввиду заргрузку данных на клиентское приложение - тогда спрашивайте в разделе по какомц-то языку...

Цитата(adamant @  7.5.2006,  16:42 Найти цитируемый пост)
2. получить текущую дату


Функция GetDate() возвращает текущую дату

Цитата(adamant @  7.5.2006,  16:42 Найти цитируемый пост)
. если дата совпадает с date("d.m.Y", $unblockdate); то сделать Update значения в DB...


Код

If Trunc(YourDate)=Trunc(GetDate())
  Begin
    UPDATE memb_info SET bloc_code=0, autounblock=0 unban=0 WHERE bloc_code =1

  End
 

Автор: adamant 9.5.2006, 22:33
оооо.... СПАСИБО ОГРОМНОЕЕ! 
Цитата

Цитата(adamant @  7.5.2006,  16:42 )    
1. загрузить данные    


В контексте самого MS SQL Server абсолютно не понятный термин, нет такого понятия как "загрузить данные" для MS SQL Server, наверное вы имеете ввиду заргрузку данных на клиентское приложение - тогда спрашивайте в разделе по какомц-то языку...


Да нет...
Вот это:
SELECT bloc_count,bloc_date,autounblock from MEMB_INFO where bloc_code = 1 and mail_chek = 1
Ну так и будет же??? 

Автор: adamant 9.5.2006, 22:58
Код

If Trunc(YourDate)=Trunc(GetDate())    
  Begin    
    UPDATE memb_info SET bloc_code=0, autounblock=0 unban=0 WHERE bloc_code =1    
  End

Ошибка: 
Server: Msg 195, Level 15, State 10, Line 1
'Trunc' is not a recognized function name.
smile pls напиши пример на sql вот этого:
Код

$sql = mssq_query("SELECT bloc_count,bloc_date,autounblock from MEMB_INFO where bloc_code = 1 and mail_chek = 1");    
$row = mssql_fetch_row( $sql );    
$outmydate = strtotime($row[3]);    
$dayadd = $row[2]*7;    
        if ($row[6] == '1')    
    {    
         $unblockdate  = mktime(0,0,0,date("m",$outmydate),date("d",$outmydate)+$dayadd,date("Y",$outmydate));    
         echo date("d.m.Y", $unblockdate);    
     }

А то лит-ры нет под рукой а хочеться пример посмотреть, да и потом проще учиться на примерах...

 

Автор: Vit 10.5.2006, 13:23
Я на PHP не программирую, можно словами описать логику? 

Автор: adamant 10.5.2006, 14:41
конечно можно! 
1. создаёться запрос в базу данных: SELECT bloc_count,bloc_date,autounblock from MEMB_INFO where bloc_code = 1 and mail_chek = 1

2. Если "autounblock" = 1, то получить текущюю дату и сравнить с (bloc_date)...
3. Если bloc_date = Getdate() то:  UPDATE memb_info SET bloc_code=0, autounblock=0 unban=0 WHERE bloc_code =1 


 

Автор: boevik 10.5.2006, 15:20
Все намного проще:
Код

UPDATE memb_info 
SET bloc_code=0, autounblock=0 unban=0 
WHERE bloc_code =1  and bloc_date = Getdate() 

 

Автор: Vit 10.5.2006, 15:38
Код

UPDATE memb_info 
SET bloc_code=0, autounblock=0 unban=0 
WHERE 
  bloc_code =1 and 
  mail_chek = 1 and
  autounblock= 1 and 
  trunc(cast(bloc_date as float))=trunc(cast(GetDate() as float))

   

Автор: boevik 10.5.2006, 17:52
Vit, что за функция trunc? 
Или же имелась ввиду floor (взять целую часть)? 

Автор: Vit 10.5.2006, 19:38
Цитата(boevik @  10.5.2006,  08:52 Найти цитируемый пост)
Vit, что за функция trunc? 
Или же имелась ввиду floor (взять целую часть)? 



Воистину так... вот что значит когда несколькими языками голова забита...  smile  

Автор: adamant 10.5.2006, 20:33
Спасибки всем smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)