2011-10-14 16 views
8

Sono uno sviluppatore PHP e sto lavorando a un progetto in cui ho bisogno di memorizzare le date arabe nel mio database.C'è un modo per memorizzare date in arabo con Postgres?

Tuttavia, ho creato l'applicazione e incorporato un calendario arabo JavaScript in esso.

Ora, quando seleziono una data, ad esempio 12/02/1442, e premere il pulsante Salva, mi dà il seguente errore:

Year Out Of Range 
+1

Fornire ulteriori informazioni - codice, schema DB, istruzioni SQL ecc. –

risposta

6

Queste date (arabo, Jalali, ...) di solito hanno problemi con SQL server. Nella mia esperienza, ci sono 3 modi per gestire la cosa:

  1. Uso carattere tipi per la memorizzazione di date nei campi con qualsiasi formato personalizzato. (Il problema sono: manipolazione, aritmetica, smistamento, ... che sono difficili da implementare)

  2. Uso intero o fisso carattere tipo per date memorizzazione, come 14420101 per 1/1/1442. (Come prima, ma l'ordinamento è risolto)

  3. Utilizzando data o timestamp tipo per l'archiviazione, è necessario convertire le date in formato data standard prima di riporla nel database, e quando li stai leggendo riconvertirli. Questo metodo richiede un linguaggio di programmazione esterno per gestire (di solito c'è una lingua esterna). O puoi scrivere una funzione interna nel tuo database.

Basta memorizzare le date quindi i metodi 1 e 2 sono sufficienti.

In caso contrario, suggerisco il terzo approccio, perché è possibile utilizzare le funzioni predefinite date e time esistenti nei server di database o nei linguaggi di programmazione.

Ad esempio è possibile utilizzare date_diff() facilmente in PHP oppure utilizzare le funzioni interne di Postgres per le date.

+0

Riguardo a 2): l'ordinamento sarebbe molto più semplice se il numero intero è codificato come 14420212. –

1

Penso che questa sarebbe un'applicazione perfetta per scrivere un tipo di dati personalizzato. Forse qualcuno l'ha già fatto, o potresti iniziare.

Problemi correlati