Calcolare date in SQL

Per aggiungere o togliere anni o giorni o mese in un sql usare:

SELECT DATEADD(yy,10, DATEDIFF(dd,0,GETDATE()))

dove yy sta per anno mm per mese dd per giorno.

Per calcolare nel passato usare un numero negativo. Alcuni esempi:

Per aggiungere 10 anni (yy) alla data di oggi:  SELECT DATEADD(yy,10, DATEDIFF(dd,0,GETDATE()))

Per togliere 7 giorni  (dd) alla data di oggi:  SELECT DATEADD(dd, -7, DATEDIFF(dd,0,GETDATE()))

Per aggiungere 1 mese (mm) alla data di oggi:  SELECT DATEADD(mm,1 , DATEDIFF(dd,0,GETDATE()))

VN:F [1.9.22_1171]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.22_1171]
Rating: +1 (from 1 vote)

SQL Server aggiornare una tabella con il contenuto di un’altra

Per aggiornare un campo (o più di uno) in una tabella con il valore di un’altra in join con la nostra tabella da aggiornare l’istruzione è la seguente:

UPDATE TABELLA_DA_AGGIORNARE
set CAMPO_DA_AGGIORNARE = new.CAMPO_OK
from TABELLA_DA_AGGIORNARE
inner join TABELLA_OK as new on new.CAMPO = old.CAMPO

Dove new.TABELLA è la tabella con i dati a posto mentre old.TABELLA è la tabella con il campo da aggiornare

VN:F [1.9.22_1171]
Rating: 8.0/10 (12 votes cast)
VN:F [1.9.22_1171]
Rating: +4 (from 10 votes)

Preparare un server di test per joomla…

Per testare il vostro sito in locale prima di aggiornare o installare software in poche mosse, questa è una mini guida su come ho fatto io ma esiste una grande quantità di altri modi, se volete questo è veloce e funziona:

  • Installare Virtualbox sacricandolo da qui , virtualbox per chi non lo conosce è un programma che permette di fare girare diversi sistemi operativi sulla vostra macchina, ne esistono altri simili (vmware, xen, qemu etc..), scegliete quello per la vostro sistema operativo della macchina host che state usando.
  • Scaricare ubuntu server da qui, ricordo che Ubuntu è il server che conterrà in sito e corrisponde al server che vi fornisce il provider per il sito effettivo on line, quando scaricate selezionate la versione server che è più leggera il desktop non vi serve.
  • Configurare una nuova macchina virtuale in virtualbox prendendo come cdrom di avvio la ISO scaricata al punto sopra e se volete raggiungere il sito dalla rete impostate “Scheda con bridge” nell’impostazione rete. Questo fa si che la macchina virtuale si mette in rete come qualsiasi altra macchina in lan (indirizzo ip fisso o dhcp)
  • Installare il sistema impostando ambiente LAMP (Linux,Apache,MySql,PHP) quando richiesto
  • Avviare la macchina con Ubuntu Server

A questo punto avete sul vostro pc l’equivalente che avete dal provider, dovete installare joomla scaricandolo da qui se volete una nuova installazione oppure ripristinate il backup del vostro sito on line per test di migrazione o altro.

 

 

 

VN:F [1.9.22_1171]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

SQL – Formattazione date con lo zero non significativo per mesi a una cifra

Per formattare il mese (o il giorno) con lo zero non significativo, per esempio gennaio = 01 invece di 1 usare la formula:

RIGHT (’00’ + CONVERT(varchar(2), DATEPART(month, GETDATE())), 2)

dove getdate() è la data odierna e va sostituita con il campo data voluto.

VN:F [1.9.22_1171]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Confronto date in SQL Server

Dato che SQL Server memorizza le date in formato AAA-MM-GG HH:MM:SS confrontando due campi data risultano sempre differenti. Per prendere solo la parte AAMMGG bisogna usare la funzione CONVERT ( data_type [ ( length ) ] , DATA_DA_CONFRONTARE [ , style ] ). La funzione restituisce  una stringa lunga quanto ci pare (lenght) nel formato che ci pare (style). Alcuni esempi che trrasformano la data di oggi (GETDATE()) in vari formati.

CONVERT(VARCHAR(19),GETDATE())
CONVERT(VARCHAR(10),GETDATE(),10)
CONVERT(VARCHAR(10),GETDATE(),110)
CONVERT(VARCHAR(11),GETDATE(),6)
CONVERT(VARCHAR(11),GETDATE(),106)
CONVERT(VARCHAR(24),GETDATE(),113)

per confrontare se DATA1 è maggiore di oggi :

CONVERT(VARCHAR(10),DATA1 ,111) >= CONVERT(VARCHAR(10), GETDATE() ,111

per ulteriori dettagli leggere qui

 

VN:F [1.9.22_1171]
Rating: 9.0/10 (2 votes cast)
VN:F [1.9.22_1171]
Rating: +1 (from 1 vote)

Riepilogo tipi di join tra dati

INNER JOIN – Fa corrispondere ad un elemento di una tabella un elemento uguale in un’altra tabella.
LEFT OUTER JOIN – E come inner ma restituisce i record mancanti nella tabella a destra come NULL.
RIGHT OUTER JOIN – E come inner ma restituisce i record mancanti nella tabella a sinistra come NULL.
FULL OUTER JOIN – Unisce tutte le righe di entrambe le tabelle restituendo NULL ai valori che non trovano una corrispondenza.
CROSS JOIN – Ad ogni elemento di una tabella si fa corrispondere ciascun elemento dell’altra tabella per tutte le combinazioni possibili.

VN:F [1.9.22_1171]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Database client universale

Trovo bellissimo questo Squirrel SQL client, un database client universale. Il concetto è che questo client accede via jdbc a qualsiasi database che supporta questa tecnologia (praticamente tutti). Si configura il driver caricando il jar fornito dal produttore:

e poi si crea un alias, cioè un puntmento ad uno o più database usando il driver preconfigurato tramite la stringa di configurazione, (jdbc://driver/indirizzoip etc.).

A questo punto facendo connetti si accede ai dati dove sarà possibile immettere comandi sql esportare tabelle e tanto altro.

Il bello è che tramite un’unica interfaccia si possono manipolare dati che risiedono in vari server e di diverso tipo e tecnologia.

 

VN:F [1.9.22_1171]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Postgresql recupero password di accesso

Mi è capitato ieri di dover accedere ad un database Postgresql su una macchina dismessa (linux debian) con Postgresql 8.1. Avevo a disposizione solo gli accessi Linux (root) ma non quelli del db.

Ecco come fare per accedere ai dati db, sostanzialmente si edita il file di configurazione permettendo l’accesso al db a utenti generici, una volta dentro si resetta la password o si rimette tutto come prima :

  • Accedere alla macchina come root (o come Administrator)
  • salvare il file di configurazione accessi del db /etc/postgresql/pg_hba.conf
  • editare il file  /etc/postgresql/pg_hba.conf
  • Io ho impostato le credenziali per accedere a tutti i db da tutti (la macchina era in rete locale ed il db era da buttare ma se il db è in produzione consiglio di leggere sotto alcune restrizioni
  • impostare:
    • local all all trust
    • host all all trust
  • Estrarre i dati che servono
  • reimpostare il file  /etc/postgresql/pg_hba.conf salvato in precedenza

Ecco un estratto delle varie opzioni di configurazione:

# Permette a tutti gli utenti locali di connettersi a tutti i database

# tramite Unix-domain sockets
#
# TYPE DATABASE USER CIDR-ADDRESS METHOD
local all all trust

# La stessa cosa usando una connessione TCP/IP locale (loopback) #
# TYPE DATABASE USER CIDR-ADDRESS METHOD
host all all 127.0.0.1/32 trust

# OPPURE con ip e netmask
host all all 127.0.0.1 255.255.255.255 trust

#Permette a tutti gli utenti di connettersi da un indirizzo IP 192.168.93.x
#al database “postgres” come utente con lo stesso username che ident riporta per
#la connessione (tipicamente lo Unix user name)
#
# TYPE DATABASE USER CIDR-ADDRESS METHOD
host postgres all 192.168.93.0/24 ident sameuser

# Permette a tutti gli utenti di connettersi dal 192.168.12.10 al database
# “postgres” se la password md5 fornita è corretta.
#
# TYPE DATABASE USER CIDR-ADDRESS METHOD
host postgres all 192.168.12.10/32 md5

# In questo caso stiamo negando qualsiasi connessione dal 192.168.54.1 dato che
# capita per prima ma accetta connessioni tramite Kerberos 5 da ogni altro
# indirizzo
#
# TYPE DATABASE USER CIDR-ADDRESS METHOD
host all all 192.168.54.1/32 reject
host all all 0.0.0.0/0 krb5

# Permette agli utenti da 192.168.x.x di connettersi a tutti I db, se
# il controllo ident viene superato. Ad esempio, ident dice che l’utente
# “pippo” e ha richiesto di connettersi come utente PostgreSQL “guest1”, la
# connessione è permessa se c’è un entry in pg_ident.conf per la map
# “omicron” che indica che “pippo” è autorizzato a connettersi come “guest1”.
#
# TYPE DATABASE USER CIDR-ADDRESS METHOD
host all all 192.168.0.0/16 ident omicron

VN:F [1.9.22_1171]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Utilizzo i cookie per essere sicuro che tu possa avere la migliore esperienza sul mio sito. Se continui ad utilizzare questo sito assumo che tu ne sia felice.. maggiori informazioni

Questo sito utilizza i cookie per fonire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o clicchi su "Accetta" permetti al loro utilizzo.

Chiudi