DATE and DATETIME

date and times are extremely frustrating data types and SQL doesn’t make them any easier to work with than other languages. Enquanto data e hora são na verdade tipos de dados completamente diferentes, eles são muitas vezes mesclados em um tipo de dados datetime. SQL datas e horas sozinho são muito simples, mesmo que eles exigem uma formatação especial. No entanto, a fusão dos dois pode ser uma das tarefas mais dolorosas que você vai enfrentar em seus primeiros anos. Uma boa regra de ouro é usar apenas uma hora e data juntos quando você absolutamente precisa ou vai precisar no futuro. Vou explicar porque é que as datas e as horas complicam as coisas num minuto. Primeiro, vamos ver como a vida é fácil quando você simplesmente trabalha com datas.

trabalhar com datas SQL

nossa tabela de “Usuários” :

id username first last member_since
1 ohBillNotAgain Hillary Clinton 2011-12-25
2 internetCreator Al Gore 2011-12-8
3 dontMessWithTexas George Bush 2011-7-9

Let’s try to get all of our members before December 25, 2011.

Exemplo

SELECT *FROM UsersWHERE member_since < '2011-12-25'

Resultado

id nome de usuário nome last member_since
2 internetCreator Al Gore 2011-12-8
3 dontMessWithTexas George Bush 2011-7-9

tudo Bem, nós dissemos: ANTES de 25 de dezembro de 2011, o que significa pobres Hillary não está incluído porque ela está em dia. O Al mal conseguiu, mas o velho George estava muito antes do nosso encontro. Acho que devíamos falar sobre o que aconteceu. Até onde member_since < ‘2011-12-25’, sabemos o que estávamos fazendo. Podemos adivinhar o que se passa aqui, mas vou vencer o cavalo morto. Verificamos o nosso membro desde a coluna para ver se é inferior a, <, a nossa data, que foi escrita entre aspas como “2011-12-25”. Muitas vezes, ao pesquisar por ajuda com datas, você vê esta sintaxe referida como ‘aaaa-MM-DD’, onde Y é para o ano, M é para o mês, e D é para o dia, obviamente. Cada repetição é um símbolo de um espaço de caracteres em branco para esse elemento. Então, você só quer dois dígitos por mês porque isso faz sentido, e talvez você não se importa com os dois primeiros caracteres do ano. Em vez disso, escreves e recebes 11. Fácil o suficiente, para as maravilhosas datas

usando DATETIME em SQL

a nossa nova tabela “utilizadores” :

id username first last last_login
1 ohBillNotAgain Hillary Clinton 2011-12-24 12:59:15
2 internetCreator Al Gore 2011-12-24 11:53:25
3 dontMessWithTexas George Bush 2011-12-24 16:24:17

Agora, vamos tentar chegar a todos os nossos membros conectados antes de antes de 1:00 DE 24 de dezembro de 2011.

Exemplo

SELECT * FROM UsersWHERE last_login < '2011-12-24 13:00:00'

Resultado

id nome de usuário nome last last_login
1 ohBillNotAgain Hillary Clinton 2011-12-24 12:59:15
2 internetCreator Al Gore 2011-12-24 11:53:25

Pobre George… tudo Bem, exatamente a mesma sintaxe como um último um com excepção substituímos o nome da coluna e usado uma seqüência de data / hora para fazer a comparação. O tipo de dados DATETIME contém todos os mesmos elementos que o tipo de dados de data mais uma cadeia de tempo. Vulgarmente referenciado como’ aaaa-MM-DD HH:MM:SS ‘ novamente, em citações simples e com um espaço que separa a cadeia de datas da cadeia de tempo, criamos a nossa cadeia de datas para comparação. Hillary e Al fazem o corte porque eles entraram antes do 2011-12-24 13: 00:00 ‘ corta o DATETIME. É muito mais fácil aqui do que parece na prática. Isso é porque colocamos a cadeia de datas à mão. O SQL tem algumas funções de data com as quais você pode brincar que você pode substituir a nossa string por:

funções importantes de data SQL

Nota: as funções de data SQL diferem muito nas versões SQL. Estes são MySQL.

  • CURDATE–) – obtém a data actual
  • CURTIME–) – obtém a hora actual
  • agora () – obtém tanto a data como a hora (no formato DATETIME)

Se não estiver a usar o MySQL, considere a mudança. Estou a brincar, mais ou menos, mas não se preocupe, uma simples consulta do Google irá ajudá-lo a encontrar as funções SQL certas para a sua base de dados SQL.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *