Domanda

Ho una tabella con 800+ record. In questa tabella ho una colonna denominata 'Dati' di varchar (10) tipo di dati che contiene le date in dd.MM.yyyy format.I vuole convertirlo in smalldatetime.

Ho provato la conversione utilizzando Enterprise Management Studio Express, ma ricevo questo errore:

The conversion of char data type to smalldatetime data type resulted in an out-of-range smalldatetime value.

Come posso convertire?

È stato utile?

Soluzione

Credo che avrete bisogno di fare un po 'di manipolazione di stringhe per ottenere questo al lavoro come penso SQL si aspetta 'MM.GG.AAAA'. Quindi, aggiornare il tavolo per flip-flop il mese e il giorno prima, poi la conversione deve passare attraverso.

update YourTable
    set Data = SUBSTRING(Data,4,3) + LEFT(Data,3) + RIGHT(Data,4)

Altri suggerimenti

È possibile utilizzare:
SELECT ID, CAST(VarcharCol As SmallDateTime) as DateTimeCol From Test1
Ciò restituirà una tabella con i valori varcharcol come smalldatetime Poi aggiornare il contenuto dei varcharcol con i nuovi valori.

Se non si desidera la conversione implicita a smalldatetime , è necessario utilizzare Converti e l'argomento style .
dd.MM.yyyy formato corrispondono allo stile di 104 .
Ad esempio:

SELECT CONVERT(smalldatetime, '31.12.2018', 104) AS "Result"

Result
------
2018-12-31 00:00:00
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top