Domanda

Il racconto è che ho un DB server SQL con campi varchar invece di datetime (non chiedere, è una lunga storia e non può essere risolto). In qualche modo abbiamo recentemente stati sempre caratteri casuali / strani inseriti in questi campi, invece di quello che dovrebbe essere lì (o NULL, '' o AAAA-MM-DD). Qualcosa di simile a questo: '? + X'. Con caratteri ASCII high-bit

Il rapporto utilizza questa query per aiutare massaggiare i dati in qualcosa di utilizzabile (solo parti rilevanti pubblicati qui):

SELECT CASE WHEN c.CallStatus = 'Closed' THEN CAST(c.ClosedDate + ' ' + c.ClosedTime as datetime) ELSE NULL END as 'Closed Date'
WHERE CAST(c.closeddate AS DATETIME) BETWEEN  @StartDate AND @EndDate

, ma sta soffocando su questa nuova dati male.

La mia domanda è questa:

Come posso aggiornare la query per ignorare i dati non corretti in modo da poter ottenere i rapporti per l'esecuzione, mentre io caccia giù la fonte dei dati non validi? La mia prima priorità è di ottenere i report in funzione, secondo è quello di trovare e uccidere la fonte dei dati errati.

È stato utile?

Soluzione

CASE WHEN ISDATE(closeddate) = 1 THEN CAST(c.closeddate AS DATETIME) ELSE NULL END

Altri suggerimenti

sembra essere tutti i fissi, thankyouverymuch! ecco il mio risultato finale:

  

E caso in cui ISDATE (closeddate) = 1   Poi gettato (c.closeddate AS DATETIME)   END ELSE NULL TRA @StartDate E   @EndDate

e ora in poi per la caccia!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top