data [SQL SERVER]

toblesu

Power Member
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>&nbsp;&nbsp;
<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!

:)
 
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:
Feb 3 2009 6:46PM
Eu queria era algo do género:
03-02-2009 18:46:00

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
 
Última edição:
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

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 ;)
 
Back
Topo