<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Daniel Lima &#187; Programação</title>
	<atom:link href="http://www.daniellima.net/tag/programacao/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.daniellima.net</link>
	<description>Divagando sobre tudo um pouco e, lembre-se, são minhas opiniões.</description>
	<lastBuildDate>Mon, 18 Jan 2010 22:30:15 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<meta xmlns="http://www.w3.org/1999/xhtml" name="robots" content="noindex,follow" />
		<item>
		<title>Inserindo registros no SQL Server por meio de um Select</title>
		<link>http://www.daniellima.net/2009/09/29/inserindo-registros-no-sql-server-por-meio-de-um-select/</link>
		<comments>http://www.daniellima.net/2009/09/29/inserindo-registros-no-sql-server-por-meio-de-um-select/#comments</comments>
		<pubDate>Tue, 29 Sep 2009 12:21:34 +0000</pubDate>
		<dc:creator>Daniel Carvalho</dc:creator>
				<category><![CDATA[Programação]]></category>
		<category><![CDATA[sql server]]></category>

		<guid isPermaLink="false">http://www.daniellima.net/?p=49</guid>
		<description><![CDATA[Inserindo dasdos no SQL Server entre bases com SELECT e INSERT]]></description>
			<content:encoded><![CDATA[<p>Bom dia!</p>
<p>Inserir dados em tabelas a partir de um SELECT no SQL Server é coisa bem simples mas possui um pequeno detalhe, logo fica a dica para que as pessoas não percam muito tempo com isto.</p>
<p>Para o exemplo ficar um pouco mais &#8220;rico&#8221;, esta sentença copia as tabelas de uma base de dados para a outra, neste exemplo eu estou executando direto da base A &#8211; minha fonte dos dados &#8211; e enviando para a tabela na BaseB os funcionários que começam com a letra &#8216;J&#8217;:</p>
<pre class="mysql">INSERT INTO BaseB.dbo.TABELA(EMPRESA, FUNCIONARIO, NOME)
SELECT '1', FUNCIONARIO, NOME FROM TABELA WHERE FUNCIONARIO LIKE 'J%'</pre>
<p>Bom, simples e fácil, fica a dica</p>
]]></content:encoded>
			<wfw:commentRss>http://www.daniellima.net/2009/09/29/inserindo-registros-no-sql-server-por-meio-de-um-select/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Somando horas no PHP e no MySQL</title>
		<link>http://www.daniellima.net/2009/09/14/somando-horas-no-php-e-no-mysql/</link>
		<comments>http://www.daniellima.net/2009/09/14/somando-horas-no-php-e-no-mysql/#comments</comments>
		<pubDate>Mon, 14 Sep 2009 12:53:39 +0000</pubDate>
		<dc:creator>Daniel Carvalho</dc:creator>
				<category><![CDATA[Programação]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.daniellima.net/?p=43</guid>
		<description><![CDATA[Funções para cálculo de diferença de horas, datas, PHP e MySQL]]></description>
			<content:encoded><![CDATA[<p>Bom dia!</p>
<p>Estou trabalhando em projetos para a minha empresa <a href="http://www.ethosconsultores.com.br" target="_blank">Ethos Consultores</a> incluindo um auditor de planos coorporativos de celulares.</p>
<p>Como é necessário somar horas, minutos e segundos, e como é complexo achar funções que funcionem perfeitamente, resolvi disponibilizar os dois códigos fontes, um para somar as horas via MySQL e outro para somar dentro de um arquivo PHP.</p>
<p>Abaixo a função em PHP:</p>
<pre class="php">
$times <span class="phpOperator">=</span> <span class="phpFunction">array</span><span class="phpOperator">(</span>
<span class="phpString">'01<span class="phpOperator">:</span>30<span class="phpOperator">:</span>22'</span>,
<span class="phpString">'34<span class="phpOperator">:</span>17<span class="phpOperator">:</span>03'</span>,
<span class="phpOperator">)</span><span class="phpText">;</span>
$seconds <span class="phpOperator">=</span> 0;
<span class="phpKeyword">
foreach </span><span class="phpOperator">(</span> $times<span class="phpKeyword"> as </span>$time <span class="phpOperator">)</span><span class="phpOperator">{</span>
<span class="phpFunction">list</span><span class="phpOperator">(</span> $g, $i, $s <span class="phpOperator">)</span> <span class="phpOperator">=</span> <span class="phpFunction">explode</span><span class="phpOperator">(</span> <span class="phpString">'<span class="phpOperator">:</span>'</span>, $time <span class="phpOperator">)</span><span class="phpText">;</span>
$seconds <span class="phpOperator">+</span><span class="phpOperator">=</span> $g * 3600;
$seconds <span class="phpOperator">+</span><span class="phpOperator">=</span> $i * 60;
$seconds <span class="phpOperator">+</span><span class="phpOperator">=</span> $s<span class="phpText">;</span>
<span class="phpOperator">}</span>
$hours <span class="phpOperator">=</span> <span class="phpFunction">floor</span><span class="phpOperator">(</span> $seconds / 3600 <span class="phpOperator">)</span><span class="phpText">;</span>
$seconds -<span class="phpOperator">=</span> $hours * 3600;
$minutes <span class="phpOperator">=</span> <span class="phpFunction">floor</span><span class="phpOperator">(</span> $seconds / 60 <span class="phpOperator">)</span><span class="phpText">;</span>
$seconds -<span class="phpOperator">=</span> $minutes * 60;
<span class="phpFunction">echo</span> <span class="phpString">"<span class="phpOperator">{</span>$hours<span class="phpOperator">}</span><span class="phpOperator">:</span><span class="phpOperator">{</span>$minutes<span class="phpOperator">}</span><span class="phpOperator">:</span><span class="phpOperator">{</span>$seconds<span class="phpOperator">}</span>"</span><span class="phpText">;</span>
</pre>
<p>Fonte:  <a href="http://angelinaweb.blogspot.com" target="_blank">This.Garota</a></p>
<p>Abaixo o código para somar em MySQL</p>
<pre class="mysql">
SELECT sec_to_time(sum(time_to_sec(right(duracao,8)))) AS DURACAO FROM tabela
</pre>
<p>Existe mais um detalhe, calcular a diferença entre campos DATETIME, no MySQL versão 5 existe o DATEDIFF, mas para versões anteriores segue uma função em PHP</p>
<pre class="php">
<span class="phpFunctionKeyword">function</span> formata<span class="phpOperator">(</span>$mins<span class="phpOperator">)</span> <span class="phpOperator">{</span>
#
<span class="phpComment">// Se os minutos estiverem negativos
</span>
<span class="phpKeyword">
if </span><span class="phpOperator">(</span>$mins <span class="phpOperator">&lt;</span> <span class="phpNumber">0</span><span class="phpOperator">)</span>
$min <span class="phpOperator">=</span> <span class="phpFunction">abs</span><span class="phpOperator">(</span>$mins<span class="phpOperator">)</span><span class="phpText">;</span>
<span class="phpKeyword">
else
</span>
$min <span class="phpOperator">=</span> $mins<span class="phpText">;</span>
<span class="phpComment">// Arredonda a hora
</span>$h <span class="phpOperator">=</span> <span class="phpFunction">floor</span><span class="phpOperator">(</span>$min / 60<span class="phpOperator">)</span><span class="phpText">;</span>
$m <span class="phpOperator">=</span> <span class="phpOperator">(</span>$min - <span class="phpOperator">(</span>$h * 60<span class="phpOperator">)</span><span class="phpOperator">)</span> / 100;
$horas <span class="phpOperator">=</span> $h <span class="phpOperator">+</span> $m<span class="phpText">;</span>
<span class="phpComment">// Matemática da quinta série
</span><span class="phpComment">// Detalhe<span class="phpOperator">:</span> Aqui também pode se usar o <span class="phpFunction">abs</span><span class="phpOperator">(</span><span class="phpOperator">)</span>
</span>>if <span class="phpOperator">(</span>$mins <span class="phpOperator">&lt;</span> <span class="phpNumber">0</span><span class="phpOperator">)</span>
$horas *<span class="phpOperator">=</span> -<span class="phpNumber">1</span><span class="phpText">;</span>
<span class="phpComment">// Separa a hora dos minutos
</span>$sep <span class="phpOperator">=</span> <span class="phpFunction">explode</span><span class="phpOperator">(</span><span class="phpString">'<span class="phpOperator">.</span>'</span>, $horas<span class="phpOperator">)</span><span class="phpText">;</span>
$h <span class="phpOperator">=</span> $sep<span class="phpOperator">[</span><span class="phpNumber">0</span><span class="phpOperator">]</span><span class="phpText">;</span>
<span class="phpKeyword">
if </span><span class="phpOperator">(</span><span class="phpFunction">empty</span><span class="phpOperator">(</span>$sep<span class="phpOperator">[</span><span class="phpNumber">1</span><span class="phpOperator">]</span><span class="phpOperator">)</span><span class="phpOperator">)</span>
$sep<span class="phpOperator">[</span><span class="phpNumber">1</span><span class="phpOperator">]</span> <span class="phpOperator">=</span> 00;
$m <span class="phpOperator">=</span> $sep<span class="phpOperator">[</span><span class="phpNumber">1</span><span class="phpOperator">]</span><span class="phpText">;</span>
<span class="phpComment">// Aqui um pequeno artifício pra colocar um zero no<span class="phpKeyword"> final
</span>
</span>>if <span class="phpOperator">(</span><span class="phpFunction">strlen</span><span class="phpOperator">(</span>$m<span class="phpOperator">)</span> <span class="phpOperator">&lt;</span> <span class="phpNumber">2</span><span class="phpOperator">)</span>
$m <span class="phpOperator">=</span> $m <span class="phpOperator">.</span> 0;
<span class="phpKeyword">
return </span><span class="phpFunction">sprintf</span><span class="phpOperator">(</span><span class="phpString">'%02d<span class="phpOperator">:</span>%02d'</span>, $h, $m<span class="phpOperator">)</span><span class="phpText">;</span>
<span class="phpOperator">}</span>
<span class="phpFunctionKeyword">function</span> Diferenca<span class="phpOperator">(</span>$data1, $data2<span class="phpOperator">=</span><span class="phpString">"",$tipo=""</span><span class="phpOperator">)</span><span class="phpOperator">{</span>
<span class="phpKeyword">
if<span class="phpOperator">(</span></span>$data2<span class="phpOperator"><span class="phpOperator">=</span>=</span><span class="phpString">""){
$data2 = date("d/m/Y H:i");
}
if($tipo==""</span><span class="phpOperator">)</span><span class="phpOperator">{</span>
$tipo <span class="phpOperator">=</span> <span class="phpString">"h"</span><span class="phpText">;</span>
<span class="phpOperator">}</span>
<span class="phpKeyword">
for<span class="phpOperator">(</span></span>$i<span class="phpOperator">=</span><span class="phpNumber">1</span><span class="phpText">;</span>$i<span class="phpOperator">&lt;</span><span class="phpOperator">=</span><span class="phpNumber">2</span><span class="phpText">;</span>$i<span class="phpOperator"><span class="phpOperator">+</span><span class="phpOperator">+</span></span><span class="phpOperator">)</span><span class="phpOperator">{</span>
$<span class="phpOperator">{</span><span class="phpString">"dia"</span>.$i<span class="phpOperator">}</span> <span class="phpOperator">=</span> <span class="phpFunction">substr</span><span class="phpOperator">(</span>$<span class="phpOperator">{</span><span class="phpString">"data"</span>.$i<span class="phpOperator">}</span>,<span class="phpNumber">0</span>,2<span class="phpOperator">)</span><span class="phpText">;</span>
$<span class="phpOperator">{</span><span class="phpString">"mes"</span>.$i<span class="phpOperator">}</span> <span class="phpOperator">=</span> <span class="phpFunction">substr</span><span class="phpOperator">(</span>$<span class="phpOperator">{</span><span class="phpString">"data"</span>.$i<span class="phpOperator">}</span>,<span class="phpNumber">3</span>,2<span class="phpOperator">)</span><span class="phpText">;</span>
$<span class="phpOperator">{</span><span class="phpString">"ano"</span>.$i<span class="phpOperator">}</span> <span class="phpOperator">=</span> <span class="phpFunction">substr</span><span class="phpOperator">(</span>$<span class="phpOperator">{</span><span class="phpString">"data"</span>.$i<span class="phpOperator">}</span>,<span class="phpNumber">6</span>,4<span class="phpOperator">)</span><span class="phpText">;</span>
$<span class="phpOperator">{</span><span class="phpString">"horas"</span>.$i<span class="phpOperator">}</span> <span class="phpOperator">=</span> <span class="phpFunction">substr</span><span class="phpOperator">(</span>$<span class="phpOperator">{</span><span class="phpString">"data"</span>.$i<span class="phpOperator">}</span>,11,<span class="phpNumber">2</span><span class="phpOperator">)</span><span class="phpText">;</span>
$<span class="phpOperator">{</span><span class="phpString">"minutos"</span>.$i<span class="phpOperator">}</span> <span class="phpOperator">=</span> <span class="phpFunction">substr</span><span class="phpOperator">(</span>$<span class="phpOperator">{</span><span class="phpString">"data"</span>.$i<span class="phpOperator">}</span>,14,<span class="phpNumber">2</span><span class="phpOperator">)</span><span class="phpText">;</span>
<span class="phpOperator">}</span>
$segundos <span class="phpOperator">=</span> <span class="phpFunction">mktime</span><span class="phpOperator">(</span>$horas2,$minutos2,<span class="phpNumber">0</span>,$mes2,$dia2,$ano2<span class="phpOperator">)</span> - <span class="phpFunction">mktime</span><span class="phpOperator">(</span>$horas1,$minutos1,<span class="phpNumber">0</span>,$mes1,$dia1,$ano1<span class="phpOperator">)</span><span class="phpText">;</span>
<span class="phpKeyword">
switch<span class="phpOperator">(</span></span>$tipo<span class="phpOperator">)</span><span class="phpOperator">{</span>
<span class="phpKeyword">
case </span><span class="phpString">"m"</span><span class="phpOperator">:</span> $difere <span class="phpOperator">=</span> $segundos/60;   <span class="phpKeyword"> break<span class="phpText">;</span></span>
<span class="phpKeyword">
case </span><span class="phpString">"H"</span><span class="phpOperator">:</span> $difere <span class="phpOperator">=</span> $segundos/3600;   <span class="phpKeyword"> break<span class="phpText">;</span></span>
<span class="phpKeyword">
case </span><span class="phpString">"h"</span><span class="phpOperator">:</span> $difere <span class="phpOperator">=</span> <span class="phpFunction">round</span><span class="phpOperator">(</span>$segundos/3600<span class="phpOperator">)</span><span class="phpText">;</span>   <span class="phpKeyword"> break<span class="phpText">;</span></span>
<span class="phpKeyword">
case </span><span class="phpString">"D"</span><span class="phpOperator">:</span> $difere <span class="phpOperator">=</span> $segundos/86400;   <span class="phpKeyword"> break<span class="phpText">;</span></span>
<span class="phpKeyword">
case </span><span class="phpString">"d"</span><span class="phpOperator">:</span> $difere <span class="phpOperator">=</span> <span class="phpFunction">round</span><span class="phpOperator">(</span>$segundos/86400<span class="phpOperator">)</span><span class="phpText">;</span>   <span class="phpKeyword"> break<span class="phpText">;</span></span>
<span class="phpOperator">}</span>
<span class="phpKeyword">
return </span>$difere<span class="phpText">;</span>
<span class="phpOperator">}</span>
</pre>
<p>Fonte: Não lembro ;-D, mas eu mesmo modifiquei</p>
<p>Para usar a função acima, utilize</p>
<pre class="php">
<span class="phpFunction">echo</span> formata<span class="phpOperator">(</span>Diferenca<span class="phpOperator">(</span>$data1,$data2,<span class="phpString">"m"</span><span class="phpOperator">)</span><span class="phpOperator">)</span><span class="phpText">;</span>
</pre>
<p>Bom, é isto, essas informações são bastante úteis para quem precisa mexer com tempos e datas que geram problemas.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.daniellima.net/2009/09/14/somando-horas-no-php-e-no-mysql/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
