Como manipular Datas no SQLite

25/04/2016

0

Ola Meus caros,

Eu novamente, agora com duvida em outro banco.

Estou tentando montar um relatorio no meu software de suporte que usa o banco sqlite.

e estou com dificuldades de manipular as datas.

Consegui montar basicamente esse select

SELECT 
  *
FROM tickets
where created_at = date('now')


A questao é que nao esta trazendo resultados e eu quero trazer todos os tiquetes abertos hoje.

Estou apanhando feito filho de bandido. kkkkk

me ajudem por favor!!!! kkkkkk

Obrigado.

Abraco.
Alex Lekao

Alex Lekao

Responder

Posts

25/04/2016

Marcos P

Alex,

A coluna "created_at" é de qual tipo de dado ?

Quando você faz...

SELECT created_at FROM tickets;


Qual a máscara de retorno dos dados recuperados pelo banco ? YYYY-MM-DD ?

Quando você faz...

 SELECT date('now');


A data atual é retornada ? No mesmo formato de "created_at" ?
Responder

26/04/2016

Alex Lekao

ola Marcos, bom dia!!!

aparece como YYYY-MM-DD HH:MM:SS.

nao, para retornar igual tenho que usar

select datetime('now')


Obrigado.
Responder

26/04/2016

Jothaz

Usei SQLite muito pouco e portanto não sou a pessoa mais indicada para ajudar, mas tente assim:

SELECT strftime('%d-%m-%Y', 'now')


Não consigo testar, pois estou como note da empresa e não tenho SQLite nele.

Para maiores detalhes Date And Time Functions
Responder

26/04/2016

Alex Lekao

Entao Jothaz,

Eu ate olhei essa pagina de documentacao do sqlite, mas confesso que fiquei meio confuso. srsrsr

so para eu ver se entendi, essa sintaxe que vc me passou seria para deixar a data no padrao "brasileiro", certo?

Ate que ja estou conseguindo manipular do jeito que eu queria, que era pegar a data de hoje para tras, mas como acabei confundindo os simbolos(erro banal e idiota. rsrsr), acabou nao dando o resultado esperado.

Agora vou precisar entender como trazer o tempo dos tickets em aberto, pegando a data de criacao e a data de hoje e subtrair, coisa que ainda estou analisando o como fazer.

Achei bem simples, mas meio novo para mim e um pouco diferente. rssr

Obrigado.
Responder

26/04/2016

Jothaz

É SQL pero no mucho.

É normal esse estranhamento, mas use a teoria suína: fuça, mas fuça bastante que chegarás lá.
Responder

26/04/2016

Alex Lekao

kkkkkk

to quase chegando no comeco. kkkkk

essa teoria eh a que mais uso, ja consegui deixar a data do jeito que quero, padrao brasileiro, dd/mm/aaaa, agora estou pesquisando sobre como calcular as datas.
Responder

26/04/2016

Marcos P

Se "calcular as datas" tiver a ver com a diferença entre elas, utilize a função julianday(), conforme descrito no help do Sqlite.

Boa sorte !
Responder

26/04/2016

Alex Lekao

Oi Marcos,

Seria basicamente isso mesmo, eu ate tenho acompanhado o help dele, mas confesso que tem me deixado bastante confuso.

Infelizmente tive que parar, pq o aplicativo que estou usando nao esta abrindo os relatorios para dar continuidade.

Mas assim que voltar a funcionar eu testo novamente.

Obrigado!!!!
Responder

13/08/2019

Fernanda

Bom dia, Alex.

Estou tendo problemas com datas no SQLite e achei o seu post, talvez vc possa me ajudar.

Estou tentando migrar o banco do TRAC no SQLite para o SQL Server. Porém não estou conseguindo visualizar as datas da tabela ticket, nem no SQLite Administrator nem no prompt de comando (sqlite3). As colunas time e changetime vêm em branco.

Você sabe como fazer para visualizar os valores?

No prompt eu tento "select datetime(time / 1000000, 'uniepoch', 'localtime'), datetime(changetime / 1000000, 'uniepoch', 'localtime') from ticket" mas não retorna nada, e eu sei que tem valores nessas colunas.

Você pode me ajudar?
Responder

13/08/2019

Alex Lekao

Oi Luciana, bom dia!!!

Olha, eu nem lembrava mais deste post. rsrs

Você quer migrar para o SQL Server? Qual Versão?

Eu não uso mais SQLite faz um bom tempo, se não me engano era em um software de chamados tecnicos que eu utilizava a alguns anos atrás, eu precisaria criar uma base de testes em alguma vm para testar e tentar te ajudar.

Mas posso tentar te ajudar sim, naquilo que estiver ao meu alcanse.

Atenciosamente,

Bom dia, Alex.

Estou tendo problemas com datas no SQLite e achei o seu post, talvez vc possa me ajudar.

Estou tentando migrar o banco do TRAC no SQLite para o SQL Server. Porém não estou conseguindo visualizar as datas da tabela ticket, nem no SQLite Administrator nem no prompt de comando (sqlite3). As colunas time e changetime vêm em branco.

Você sabe como fazer para visualizar os valores?

No prompt eu tento "select datetime(time / 1000000, 'uniepoch', 'localtime'), datetime(changetime / 1000000, 'uniepoch', 'localtime') from ticket" mas não retorna nada, e eu sei que tem valores nessas colunas.

Você pode me ajudar?
Responder

13/08/2019

Fernanda

Oi Alex.

Estou usando o SQL Server 2017, mas o problema é no SQLite.

Também usávamos o TRAC, um software para chamados técnicos, mas agora estamos usando um novo sistema e eu preciso migrar os tickets antigos para o sistema novo.

Estou gerando arquivos csv pelo command prompt, usando o comando Separator, o Output e um select. Só que os campos do tipo data vêm em branco.

Estou formatando os campos no select com a função datetime:

select datetime(time / 1000000, 'uniepoch', 'localtime'), datetime(changetime / 1000000, 'uniepoch', 'localtime') from ticket

porém continua retornando em branco.

Você sabe por quê, e como solucionar esse problema?

Um abraço,

Fernanda Araujo
Responder

13/08/2019

Jothaz

Oi Alex.

Estou usando o SQL Server 2017, mas o problema é no SQLite.

Também usávamos o TRAC, um software para chamados técnicos, mas agora estamos usando um novo sistema e eu preciso migrar os tickets antigos para o sistema novo.

Estou gerando arquivos csv pelo command prompt, usando o comando Separator, o Output e um select. Só que os campos do tipo data vêm em branco.

Estou formatando os campos no select com a função datetime:

select datetime(time / 1000000, 'uniepoch', 'localtime'), datetime(changetime / 1000000, 'uniepoch', 'localtime') from ticket

porém continua retornando em branco.

Você sabe por quê, e como solucionar esse problema?

Um abraço,

Fernanda Araujo


Pelo que entendi você esta usando o SQLCMD no prompt de comando?

Por favor post o comando completo que você esta usando, facilita a ajuda.

Já usei o comando abaixo usando o PowerShell e funciona.

Invoke-Sqlcmd -Query "SELECT * FROM Sua_tabela;" `
              -Database Seu_banco_dados `
              -Server Seu_server |
Export-Csv -NoTypeInformation `
           -Path "Seu_cvs.csv" `
           -Encoding UTF8

Responder

13/08/2019

Alex Lekao

Oi Fernanda,

Me tira uma dúvida... pq vc esta usando esse "/ 1000000"?

Experimentou fazer a operação sem ele?

Pelo que estou vendo na documentação, o que vc esta usando esta correto.


Oi Alex.

Estou usando o SQL Server 2017, mas o problema é no SQLite.

Também usávamos o TRAC, um software para chamados técnicos, mas agora estamos usando um novo sistema e eu preciso migrar os tickets antigos para o sistema novo.

Estou gerando arquivos csv pelo command prompt, usando o comando Separator, o Output e um select. Só que os campos do tipo data vêm em branco.

Estou formatando os campos no select com a função datetime:

select datetime(time / 1000000, 'uniepoch', 'localtime'), datetime(changetime / 1000000, 'uniepoch', 'localtime') from ticket

porém continua retornando em branco.

Você sabe por quê, e como solucionar esse problema?

Um abraço,

Fernanda Araujo
Responder

13/08/2019

Alex Lekao

Oi Fernanda,

Seu script parece estar errado.

de uma olhada e ajuste para "unixepoch".

Dê uma olhada e me diga se funcionou.

Atenciosamente,


Oi Alex.

Estou usando o SQL Server 2017, mas o problema é no SQLite.

Também usávamos o TRAC, um software para chamados técnicos, mas agora estamos usando um novo sistema e eu preciso migrar os tickets antigos para o sistema novo.

Estou gerando arquivos csv pelo command prompt, usando o comando Separator, o Output e um select. Só que os campos do tipo data vêm em branco.

Estou formatando os campos no select com a função datetime:

select datetime(time / 1000000, 'uniepoch', 'localtime'), datetime(changetime / 1000000, 'uniepoch', 'localtime') from ticket

porém continua retornando em branco.

Você sabe por quê, e como solucionar esse problema?

Um abraço,

Fernanda Araujo
Responder

14/08/2019

Fernanda

Muito obrigada, Alex! Era isso mesmo, agora consigo visualizar as datas. Salvou minha vida!
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar