Mais um problema.... tenho o seguinte código: <select name="pesquisa" id="pesquisa" > <option value='zero'>--------------</option> <?php $ano_a=$ano-1; $datas=mssql_query("select distinct data, convert(varchar(30),data,111) from encm where ped_id = '$resp[ped_id]' order by data desc"); while ($linha_a = mssql_fetch_row($datas)) { echo "<option value=$linha_a[0]"; if ($_GET[d] == $linha_a[0]) echo " selected "; echo "> $linha_a[1]"; echo " </option>"; }?> </select> </label> <input type="image" name="Ver" src="images/17.png" id="Ver" alt="Escolher Mês" value="Ver" /><p><center>Seleccione um mes,<strong> ou</strong> uma data , para efectuar a sua pesquisa! </center></p> <br /> </form> <? if(($data_row=$_POST['pesquisa'])) { if($data_row=$_POST['pesquisa']) { echo $data_row=$_POST['pesquisa']; $bd=mssql_query("select * from encm where ped_id = '$resp[ped_id]' and data='$data_row' order by data desc"); $num_result=mssql_num_rows($bd); } que me vai originar os seguintes erros: Mar // imprime o MÊS seleccionado - em vez da data em si, do tipo: 2008-03-06 22:46:13.607 Warning: mssql_query() [function.mssql-query]: message: Conversion failed when converting datetime from character string. (severity 16) in C:\xampp\htdocs\mabiliz\Cliente\pesquisas.php on line 194 Warning: mssql_query() [function.mssql-query]: Query failed in C:\xampp\htdocs\mabiliz\Cliente\pesquisas.php on line 194 Warning: mssql_num_rows(): supplied argument is not a valid MS SQL-result resource in C:\xampp\htdocs\mabiliz\Cliente\pesquisas.php on line 201 Portanto, a tabela possui um campo "data" do tipo DATETIME... acontece que preciso de ir buscar esse valor e pretendia que o seu formato fosse do género 'YYYY-MM-DD', arranjei uma solução para isso, através do SELECT CONVERT..... Na minha caixa de selecção, utilizo uma query que me vai devolver dois resultados o valor do campo DATA e o valor da DATA CONVERTIDA (visível)... quando predetendo usar o valor do campo da tabela para efectuar outras pesquisas ele dá erro de conversão de datetime para sting e além disso o valor que é passado para a variável $data_row é "Jan 14 2008 12:00AM" imprimindo apenas o "Jan".... ou invés de receber "2008-03-06 22:46:13.607". agradecia algumas sugestões para resolver o meu problema.... como faço para que a variável $data_row possa ficar com "2008-03-06 22:46:13.607". Obrigado.
Se estivesse a trabalhar MYSQL, uma solução seria por exemplo usar o mysql_real_escape_string($_POST['pesquisa']); existe algum "comando" em sql server semelhante a este? que me possa retornar a string toda que existe guardada num campo da BD? o formato extraído, já nao tem que ser 'Y-m-d H:i:s' como tinha inicialmente pedido. Outra coisa, tenho uma função que pretendo que faça o return de uma variável, no entanto ela não retorna... a sintaxe é: function convertData($var) { $data_BD=$var; if($data_BD!='') { $datahora=explode(' ',$data_BD); $mes=$datahora[0]; $dia=$datahora[1]; $ano=$datahora[2]; switch($mes) { case "Jan": $mes_sqlserver = "01"; break; case "Feb": $mes_sqlserver = "02"; break; case "Mar": $mes_sqlserver = "03"; break; case "Apr": $mes_sqlserver = "04"; break; case "May": $mes_sqlserver = "05"; break; case "Jun": $mes_sqlserver = "06"; break; case "Jul": $mes_sqlserver = "07"; break; case "Aug": $mes_sqlserver = "08"; break; case "Sep": $mes_sqlserver = "09"; break; case "Oct": $mes_sqlserver = "10"; break; case "Nov": $mes_sqlserver = "11"; break; case "Dec":$mes_sqlserver = "12"; break; } echo $data_f = ($ano."-".$mes_sqlserver."-".$dia); return $data_f; } } no código faço o chamamento da função da seguinte forma: $var=$linha_a[0]; convertData($var); mas quando faço o echo $var; ele imprime o valor que está no $linha_a[0]; possivelmente estou a usar mal a função..... alguma sugestão? obrigado.
Problema resolvido..... Alterei o formato do campo "data" para VARCHAR e funcionou.. deixei a função "CONVERT" de lado e trabalhei como se de uma string se tratasse, desde o momento da sua inserção na BD até ao momento das pesquisas.... nao deu problemas, pode nao ser a solução mais correcta, mas neste caso a mais eficaz! obrigado na mesma! Cumps
mesmo ja tendos resolvido o problema qui vai uma lista de converts datetime em sqlserver Código: select convert(char, getdate(), 100) --mon dd yyyy hh:mmAM (or PM) select convert(char, getdate(), 101) --mm/dd/yyyy select convert(char, getdate(), 102) --yyyy.mm.dd select convert(char, getdate(), 103) --dd/mm/yyyy select convert(char, getdate(), 104) --dd.mm.yyyy select convert(char, getdate(), 105) --dd-mm-yyyy select convert(char, getdate(), 106) --dd mon yyyy select convert(char, getdate(), 107) --mon dd, yyyy select convert(char, getdate(), 108) --hh:mm:ss select convert(char, getdate(), 109) --mon dd yyyy hh:mm:ss:mmmAM (or PM) select convert(char, getdate(), 110) --mm-dd-yyyy select convert(char, getdate(), 111) --yyyy/mm/dd select convert(char, getdate(), 112) --yyyymmdd select convert(char, getdate(), 113) --dd mon yyyy hh:mm:ss:mmm select convert(char, getdate(), 114) --hh:mm:ss:mmm(24h) select convert(char, getdate(), 120) --yyyy-mm-dd hh:mm:ss(24h) select convert(char, getdate(), 121) --yyyy-mm-dd hh:mm:ss.mmm
sim.. tenho conhecimento dessa lista..... mas o meu maior problema nao tinha a ver com esse tipo de conversão... antes com o POST... que so me ia buscar o "<mes>", por exemplo na data "Marc 10 2008 00:00:00", com o POST so conseguia ia buscar "Mar".. o resto da string ficava perdida.... depois nao conseguia fazer nada dela........ daí ter optado pela maneira mais fácil e provavelmente menos correcta, transformar o campo "datetime" em "varchar".... de qualquer das formas, muito obrigado pela dica!
para não estar a por aqui o code uma uma cena que faz isso postei isso no rapidshare http://rapidshare.com/files/98916345/data.rar.html espero quer ajude
Boas. Alguém me sabe dizer como converter, em T-SQL, uma variável DATETIME para este formato: dd-mm-yyyy hh:mm:ss ? Deixo aqui um código de exemplo: Código: PRINT CONVERT(nvarchar(30), GetDate(), 100) ... que me devolve: Eu queria era algo do género: Bibliografia já pesquisada: http://doc.ddart.net/mssql/sql70/ca-co_1.htm http://sqlserverpedia.com/wiki/Data_Types_-_Date_and_Time http://databases.aspfaq.com/databas...styles-for-converting-datetime-to-string.html
Se o que o alfinete postou está correcto: Código: print convert(char, getdate(), 110) + ' ' + convert(char, getdate(), 108)
Olha logo a noite quando chegar a casa, eu dou uma vista de olhos no meu livro de sql, se tiver algo eu digo-te