lunedì 13 febbraio 2012

Mysql e date con tutti ZERO




Leggi l'articolo completo su flaviocdc.net

Premetto che non capirò mai a cosa serva la data 0000-00-00 in quanto se una data non è definita è meglio usare null, premetto inoltre che ho una certa antipatia per MySQL … purtroppo non posso scegliere io la tecnologia da usare quindi mi tocca usare anche MySQL.

Detto ciò, mi sono imbattuto nel problema di come gestire la data 0000-00-00 presente in un db MySQL all'interno di codeice java, ad esempio per recuperara la data da una colonna di una tabella.
Chiaramente il metodo getDate() lancia un'eccezione se trova una data del tipo 0000-00-00 in quanto non è una data (i progettisti di MySQL sanno che i giorni vanno da 1 a 31 ed i mesi da 1 a 12???); a me non piace neanche usare getString() e/o usare vari try/catch quindi cercando su internet ho trovato un'altra soluzione: modificare la URL JDBC in modo da passare null al posto delle date 0000-00-00 Tale URL è simile alla seguente

jdbc:mysql://myhost.mydomain/mydb?zeroDateTimeBehavior=convertToNull

da notare il parametro zeroDateTimeBehavior=convertToNull
 

giovedì 2 febbraio 2012

Floating point da riga di comando

Leggi l'articolo completo su flaviocdc.net


A volte, ma non troppo spesso, mi capita di dover inserire dei calcoli in virgola mobile in uno script bash; il problema è che (per quanto ne so io) bash non supporta i numeri in virgola mobile, è quindi necessario utilizzare una calcolatrice da riga di comando da integrare nello script bash. La calcolatrice che utilizzo è bc che si trova su molte distribuzioni linux e su Mac OS X Vediamo un esempio di funzionamento
miohost:~ miouser$ bc
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'. 
11 / 3
3
c'è qualcosa che non torna …
  • compaiono degli “header” inutili –> questi possono essere messi a tacere con il flag -q (lanciare il comando bc -q al posto di bc)
  • i numeri non sono a virgola mobile –> per farli a virgola mobile è necessario impostare nello script bc il parametro scale=…
miohost:~ miouser$ bc -q
scale=5
11 / 3
3.66666
Per il resto … RTFM … ovvero man bc