SQLite - Coluna DATETIME

Forum sobre SQL.

Moderador: Moderadores

Avatar do usuário
susviela@bol.com.br
Usuário Nível 3
Usuário Nível 3
Mensagens: 236
Registrado em: 30 Jun 2017 11:17
Localização: São José / SC
Contato:

SQLite - Coluna DATETIME

Mensagem por susviela@bol.com.br »

Estou criando uma base de dados e tenho uma dúvida que já está solucionada mas eu acho que a colaboração de vocês pode render um código mais produtivo.
Ambiente:
HMG 3.4.4 ( SQLite nativo )

Código: Selecionar todos

	LOCAL cSql := 	"CREATE TABLE cliente ( " +;
					" idcliente INTEGER PRIMARY KEY AUTOINCREMENT, " +;
					" nome CHAR(100), "+;
					" idade INTEGER, "+;
					" ultimocontato DATETIME DEFAULT ('0000-01-01 00:00:00'); "
Estou tendo alguma dificuldade com o retorno da consulta dessa tabela, com o seguinte código:

Código: Selecionar todos

  cSql := "SELECT * FROM cliente"
...
..
	DO WHILE sqlite3_step( cRet ) == 100 

		aLinha := {}
		nI := 0
		
		AADD( aLinha, sqlite3_column_int ( cRet, ++nI ) )		// idcliente
		AADD( aLinha, sqlite3_column_text( cRet, ++nI ) ) 		// nome	
		AADD( aLinha, sqlite3_column_int( cRet, ++nI ) ) 		// idade 		
		AADD( aLinha, sqlite3_column_text( cRet, ++nI ) ) 		// ultimocontato

		AADD(aDados, aLinha)

	ENDDO
Até solucionei usando a seguinte linha:

Código: Selecionar todos

  cSql := "SELECT idcliente, nome, idade, DATETIME(ultimocontato) FROM cliente"
Como vocês estão tratando isso ? ( sqlite3_column_type está me retornando 3 )
.
.
"E quando você perder o controle, colherá o que plantou."
=========================================
Carlos Alberto Nunes #Susviela
Site: https://www.PowerInformatica.com.br
=========================================
Blog xBase: https://programandoxbase.wordpress.com/
Blog TI: https://susviela.wordpress.com

( #ProgramandoxBase #AllxBase )
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

SQLite - Coluna DATETIME

Mensagem por alxsts »

Olá!
susviela@bol.com.br escreveu:Como vocês estão tratando isso ?
Nunca mexi com SQLite. Este tópico é meu primeiro contato com ele. Pesquisando sobre esse SGBD verifiquei - além do que já foi exposto em outro tópico de sua autoria - que é bem leve. Ainda não vi tudo mas, pelo menos stored procedures ele não tem.

Pesquisando sobre tipos de dados, descobri que ele trata os tipos da mesma forma que o Clipper, ou seja, o conteúdo da coluna define seu tipo (ou afinidade, como é tratado no jargão SQLite). Não sei até que ponto isto é bom ou ruim. Vejam Datatypes In SQLite Version 3
susviela@bol.com.br escreveu:Estou criando uma base de dados ...
Este é o melhor momento para já começar usando alguns padrões que podem ajudar na sequência do desenvolvimento e futuras manutenções. É uma ótima prática adotar padrão de nomenclatura para os objetos do banco de dados. Eu uso prefixos que ajudam a agrupar objetos e pesquisar no código fonte.

Prefixos para objetos (pode variar de um SGBD para outro)
  • tb - tabela - tbCustomer
    vw - view - vwCustomer
    tg - trigger - tgInsertCustAddress
    sq - sequence - sqCustID
    fn - função - fnComputeAmountDue
    sp - stored procedure - spListAllProducts
    ix - índice - ixCustomerName
Prefixos para colunas
  • fg - flag - fgActive
    cd - código - cdCustomer
    qt - quantidade - qtItems
    vl - valor - vlTotalOrder
    nm - nome - nmUser
    ds - descrição - dsStatus
    dt - data - dtLastUpdated
    hr - hora - hrStart
    ts - timestamp - tsInserted
    gi - guid (global unique identifier) - giIdentifier
    sg - sigla - sgUF
    st - status - stOrderStatus
    tx - taxa - txInterestRate
    tp - tipo - tpProductType
    nu - número -nuStreetNumber
    id - Identity - idOrderID
    pk - primary key - PKInvoice
    fk - foreign key - FKOrderItemProduct
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
susviela@bol.com.br
Usuário Nível 3
Usuário Nível 3
Mensagens: 236
Registrado em: 30 Jun 2017 11:17
Localização: São José / SC
Contato:

SQLite - Coluna DATETIME

Mensagem por susviela@bol.com.br »

Eric.Developer escreveu: Não há nenhum problema no código abaixo, o erro esta apenas no CREATE, não fechou o parenteses
Ok, Desculpe o erro de digitação pois esse é um exemplo do código criado ... faltou mesmo o parenteses no final, obrigado por dispor-se em analisar o código.
alxsts escreveu:Olá!

susviela@bol.com.br escreveu:Estou criando uma base de dados ...
Este é o melhor momento para já começar usando alguns padrões que podem ajudar na sequência do desenvolvimento e futuras manutenções. É uma ótima prática adotar padrão de nomenclatura para os objetos do banco de dados. Eu uso prefixos que ajudam a agrupar objetos e pesquisar no código fonte.

Prefixos para objetos (pode variar de um SGBD para outro)

Prefixos para colunas
Opa ... muito boa essas dicas, algumas já uso em no Postgresql onde trabalho com desenvolvimento web, e optei por usar SQLite para desenvolver em desktop pela praticidade de ser embarcado, eu envio APENAS UM EXECUTÁVEL para o cliente e BINGO !!!!!!! (Qualquer semelhança com o Clipper não é mera coincidência ! )

Facilitar a vida do usuário com certeza vai aumentar o alcance dos seus sistemas .
.
.
"E quando você perder o controle, colherá o que plantou."
=========================================
Carlos Alberto Nunes #Susviela
Site: https://www.PowerInformatica.com.br
=========================================
Blog xBase: https://programandoxbase.wordpress.com/
Blog TI: https://susviela.wordpress.com

( #ProgramandoxBase #AllxBase )
Avatar do usuário
HASA
Colaborador
Colaborador
Mensagens: 1088
Registrado em: 01 Set 2003 19:50
Localização: São Paulo
Contato:

SQLite - Coluna DATETIME

Mensagem por HASA »

:-o
Susviela no site oficial achei esse comentário :

Se houver muitos programas clientes enviando SQL para o mesmo banco de dados em uma rede, use um mecanismo de banco de dados cliente / servidor em vez de SQLite. O SQLite funcionará em um sistema de arquivos de rede, mas devido à latência associada à maioria dos sistemas de arquivos de rede, o desempenho não será ótimo. Além disso, a lógica de bloqueio de arquivos é problemática em muitas implementações do sistema de arquivos de rede (no Unix e no Windows). Se o bloqueio de arquivo não funcionar corretamente, dois ou mais clientes podem tentar modificar a mesma parte do mesmo banco de dados ao mesmo tempo, resultando em corrupção. Como esse problema resulta de erros na implementação do sistema de arquivos subjacente, não há nada que o SQLite possa fazer para evitá-lo.
https://www.sqlite.org/whentouse.html

Será que é um balde de água fria ?

:'(

HASA
Avatar do usuário
HASA
Colaborador
Colaborador
Mensagens: 1088
Registrado em: 01 Set 2003 19:50
Localização: São Paulo
Contato:

SQLite - Coluna DATETIME

Mensagem por HASA »

:))
Sobre a dúvida https://www.sqlite.org/lang_datefunc.html
:)Pos
HASA
Avatar do usuário
susviela@bol.com.br
Usuário Nível 3
Usuário Nível 3
Mensagens: 236
Registrado em: 30 Jun 2017 11:17
Localização: São José / SC
Contato:

SQLite - Coluna DATETIME

Mensagem por susviela@bol.com.br »

HASA escreveu:Susviela no site oficial achei esse comentário :

Se houver muitos programas clientes enviando SQL para o mesmo banco de dados em uma rede, use um mecanismo de banco de dados cliente / servidor em vez de SQLite. O SQLite funcionará em um sistema de arquivos de rede, mas devido à latência associada à maioria dos sistemas de arquivos de rede, o desempenho não será ótimo. Além disso, a lógica de bloqueio de arquivos é problemática em muitas implementações do sistema de arquivos de rede (no Unix e no Windows). Se o bloqueio de arquivo não funcionar corretamente, dois ou mais clientes podem tentar modificar a mesma parte do mesmo banco de dados ao mesmo tempo, resultando em corrupção. Como esse problema resulta de erros na implementação do sistema de arquivos subjacente, não há nada que o SQLite possa fazer para evitá-lo.
https://www.sqlite.org/whentouse.html

Será que é um balde de água fria ?

Olha eu penso que para cada caso o desenvolvedor tem que procurar a melhor forma de armazenar informações, esse comentário é para evitar cobranças / expectativas em excesso sobre esse SGBD (muito verdadeira e honesta essa colocação no site do produto), se você procurar casos de sucesso do mesmo vai ver que ele é bem confiável. Se for comparar de forma injusta os DBFs também tem limitações e nem por isso deixam de ter MILHARES de casos de sucesso, aqui mesmo no fórum tem exemplos.

Se for uma aplicação com maior demanda eu penso em utilizar Postgresql, especificamente porque tenho mais conhecimento nesse SGBD, mesmo sabendo que MariaDB é mais utilizado pela comunidade harbour.
.
.
"E quando você perder o controle, colherá o que plantou."
=========================================
Carlos Alberto Nunes #Susviela
Site: https://www.PowerInformatica.com.br
=========================================
Blog xBase: https://programandoxbase.wordpress.com/
Blog TI: https://susviela.wordpress.com

( #ProgramandoxBase #AllxBase )
Avatar do usuário
HASA
Colaborador
Colaborador
Mensagens: 1088
Registrado em: 01 Set 2003 19:50
Localização: São Paulo
Contato:

SQLite - Coluna DATETIME

Mensagem por HASA »

:))
Obrigado, Carlos como é um mundo novo para mim as diversas dúvidas são inevitáveis, quanto ao PostgreSQL esse sim tive boas leituras nA Net e aqui no forum, de qualquer forma desculpe o "afobamento", vou me conter :)´
:-Y
HASA
Avatar do usuário
susviela@bol.com.br
Usuário Nível 3
Usuário Nível 3
Mensagens: 236
Registrado em: 30 Jun 2017 11:17
Localização: São José / SC
Contato:

SQLite - Coluna DATETIME

Mensagem por susviela@bol.com.br »

HASA escreveu::))
Obrigado, Carlos como é um mundo novo para mim as diversas dúvidas são inevitáveis, quanto ao PostgreSQL esse sim tive boas leituras nA Net e aqui no forum, de qualquer forma desculpe o "afobamento", vou me conter ...
HASA
Que nada colega, é essa ânsia por saber/ conhecer / criar que move os programadores.

Uma dica, para alimentar / aguçar mais o seu interesse:

1) Esse mundo 0800 é maravilhoso, baixa esse gerenciador SQLite, e dá uma brincada com ele.

https://sqlitestudio.pl/index.rvt?act=download

2) Cria uma Banco / umas tabelas nesse banco;

3) Depois vai em TOOLS / OPEN SQL Editor ; ou (ALT + E)

Divirta-se ....
.
.
"E quando você perder o controle, colherá o que plantou."
=========================================
Carlos Alberto Nunes #Susviela
Site: https://www.PowerInformatica.com.br
=========================================
Blog xBase: https://programandoxbase.wordpress.com/
Blog TI: https://susviela.wordpress.com

( #ProgramandoxBase #AllxBase )
Avatar do usuário
HASA
Colaborador
Colaborador
Mensagens: 1088
Registrado em: 01 Set 2003 19:50
Localização: São Paulo
Contato:

SQLite - Coluna DATETIME

Mensagem por HASA »

:D :))
- Bom dia, vamos em frente.
:|< :|<
HASA
Responder