[FUG-BR] [off] [longo] Pegando datas timestamp em arquivo
Cristiano Panvel
cristiano.panvel em gmail.com
Segunda Julho 28 08:53:03 BRT 2008
Pessoal obrigado pela forca, vou testar essas dicas e o exemplo do
Nilton e dou um retorno
cris.
On Fri, Jul 25, 2008 at 11:46 PM, Nilton Jose Rizzo <rizzo em i805.com.br> wrote:
>
>>
>> > 2008/7/23 Cristiano Panvel <cristiano.panvel em gmail.com>:
>> > > Oi, o banco he MySQl versao 3.0, e nem posso pensar em atualizar
>> > > por enquanto...
>> > >
>> > > Tenho uma lista grande com esses valores em timestamp, eu tenho
>> > > que achar o intervalo dessas datas comecando ler pelo comeco do
>> > > arquivo, primeira linha he:
>> > >
>> > > 20070925145857.714132
>> > >
>> > > Quando o intervalo da hora mudar de 145857 para 151100 eu paro de
>> > > ler e imprimo essas duas linhas em um algum lugar, porque irei
>> > > precisar desses valores depois, e continou lendo da linha que
>> > > parei ate o final he mais ou menos isso.Nao sei se tem essa opcao
>> > > no MySQL pelo na versao 3 eu nao achei
>> > >
>> > > 2008/7/22 Tiago Drumond <kdc_vk em hotmail.com>:
>> > > eschoedler em viavale.com.br -- Tue, 22 Jul 2008 14:43:50 -0300:
>> > > > "Cristiano Panvel" <cristiano.panvel em gmail.com> -- Tue, Jul 22, 2008
> 1:03 PM:
>> > > >
>> > > > Oi pessoal,
>> > > > Tenho um arquivo no formato timestamp extraido do banco. Dessa
>> > > > forma:
>> > > >
>> > > > 20070925145857.714132
>> > > > 20070925145859.714131
>> > > > 20070925145900.714130
>> > > > 20070925145902.714129
>> > > > 20070925145904.714129
>> > > > 20070925145906.714128
>> > > > 20070925145907.714127
>> > > > 20070925145909.714126
>> > > > 20070925151100.714126
>> > > > 20070925151110.788127
>> > > > 20070925151200.725128
>> > > >
>
> Estou pegando carona aqui ... me corrijam se estiver errado ...
>
> Você precisa retirar as primeiras linhas de cada secao, ou seja,
> extraindo do exemplo acima:
>
> 20070925145857.714132 e
> 20070925151100.714126
>
> Voce utiliza o Mysql 3.x certo?
>
> porque não utiliza o seguinte comando:
>
> SELECT left(campodotimestamp,14) from tabela limit 1 <- retorna a 1 ocorrencia
>
> PS.: segue seguencia de testes;
>
> mysql> create table a ( ts numeric (21,6));
> Query OK, 0 rows affected (0.05 sec)
>
> mysql> create table b ( ts timestamp);
> Query OK, 0 rows affected (0.01 sec)
>
>
> mysql> insert into a values (
> 20070925145857.714132),(20070925145859.714131),(20070925145900.714130),(20070925145902.714129),(20070925145904.714129),(20070925145906.714128),(20070925145907.714127),(20070925145909.714126),(20070925151100.714126),(
> 20070925151110.788127),( 20070925151200.725128);
> Query OK, 11 rows affected (0.00 sec)
> Records: 11 Duplicates: 0 Warnings: 0
>
> mysql> insert into b values (
> 20070925145857.714132),(20070925145859.714131),(20070925145900.714130),(20070925145902.714129),(20070925145904.714129),(20070925145906.714128),(20070925145907.714127),(20070925145909.714126),(20070925151100.714126),(
> 20070925151110.788127),( 20070925151200.725128);
> Query OK, 11 rows affected, 1 warning (0.01 sec)
> Records: 11 Duplicates: 0 Warnings: 1
>
> mysql> select ts from a limit 1;
> +-----------------------+
> | ts |
> +-----------------------+
> | 20070925145857.714132 |
> +-----------------------+
> 1 row in set (0.00 sec)
>
> mysql> select ts from b limit 1;
> +---------------------+
> | ts |
> +---------------------+
> | 2007-09-25 14:58:58 |
> +---------------------+
> 1 row in set (0.01 sec)
>
> mysql> select
> -> left(ts,14) from a;
> +----------------+
> | left(ts,14) |
> +----------------+
> | 20070925145857 |
> | 20070925145859 |
> | 20070925145900 |
> | 20070925145902 |
> | 20070925145904 |
> | 20070925145906 |
> | 20070925145907 |
> | 20070925145909 |
> | 20070925151100 |
> | 20070925151110 |
> | 20070925151200 |
> +----------------+
> 11 rows in set (0.04 sec)
>
> mysql> select left(ts,14) from b;
> +----------------+
> | left(ts,14) |
> +----------------+
> | 2007-09-25 14: |
> | 0000-00-00 00: |
> | 2007-09-25 14: |
> | 2007-09-25 14: |
> | 2007-09-25 14: |
> | 2007-09-25 14: |
> | 2007-09-25 14: |
> | 2007-09-25 14: |
> | 2007-09-25 15: |
> | 2007-09-25 15: |
> | 2007-09-25 15: |
> +----------------+
> 11 rows in set (0.00 sec)
>
>
> testa ai .. se quiser usar mysql no shell pode criar um arquivo bat
> com o sql (as queries) e rodar do seguinte modo:
>
> mysql -u root < arquivo.sql
>
> mas o arquivo.sql pode ser:
>
> user database;
>
> select left(ts,14) from a;
>
>
> e em C-shell:
>
> #!/sbin/csh
>
> set inicio= `mysql -u root < arquivo.sql | awk '{ print $1 };' | tail -n 1`
>
> while (1)
>
> set p = @ inicio + xxxxxx
> echo "use database;" > novo.sql
> echo "select ts from tabela where ($p) = left(ts,14) limit 1;" >> novo.sql
> set inicio= `mysql -u root < arquivo.sql | awk '{ print $1 };' | tail -n 1`
>
> end
>
>
> veja se era isso.
>
>
> --
> Nilton José Rizzo
> 805 Informatica
> Disseminando tecnologias
> 021 2413 9786
>
> -------------------------
> Histórico: http://www.fug.com.br/historico/html/freebsd/
> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
>
Mais detalhes sobre a lista de discussão freebsd