Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 22

Discussione: SQL e campo Date

  1. #1
    Utente di HTML.it L'avatar di x69asterix
    Registrato dal
    Jan 2005
    Messaggi
    1,303

    sql e Campo date

    mi date una mano
    ho un applicazione web che si collega a un db.mdf, tutto ok....
    adesso mi trovo davanti "forse ancora in tempo" ad un problema ho cominciato ad inserire su di un campo di testo delle date.
    e chiaro che devo correggere il campo in date.
    partendo da un txtbox ed inserendo una data
    01/01/2010
    qual'è l'istruzione sql da inserire:
    mi pare di avere letto sul forum che il formato che si aspetta il server è in questo formato:

    Ricorda che il formato delle date in Sql è quello ISO :

    "2007-08-23T00:00:00"

    mi sembra logico che se io inserisco il testo del txtbox in formato 01/01/2010 mi vada in errore
    cosa nu suggerite?

  2. #2
    codice:
    INSERT INTO Tabella(data) VALUES('20100101')
    per renderti conto che quanto ti ho detto funziona fai questo test:
    codice:
    SET NOCOUNT ON
    CREATE TABLE X(D DATETIME)
    
    INSERT INTO X VALUES ('20100101')
    SELECT * FROM X
    
    DROP TABLE X
    Chi sbaglia, apprende meglio di chi non ha mai commesso errori.
    DOT.NET Addicted since 2006 (My Blog)

  3. #3
    scusami, ho omesso la cosa più importante, da qui si evince che il formato data corretto è prima di tutto tra apici in questo format: 'yyyymmdd'.
    Chi sbaglia, apprende meglio di chi non ha mai commesso errori.
    DOT.NET Addicted since 2006 (My Blog)

  4. #4
    Utente di HTML.it L'avatar di GabbOne
    Registrato dal
    Mar 2006
    Messaggi
    577
    Non capisco bene se sei costretto ad avere nel db un capo di tipo Testo o se lo pui cambiare in un tipo DateTime.

    Io personalmente utilizzo sempre l'oggetto DateTime per inserire una data all'interno di una query sql ... evitando cosi molti problemi riguardanti la gestione delle date e soprattutto con il vantaggio di riutilizzare codice gia ampiamente testato (confronti , operazioni arit...)

  5. #5
    Utente di HTML.it L'avatar di x69asterix
    Registrato dal
    Jan 2005
    Messaggi
    1,303
    posso settare il campo in datetime, ma per i record già inseriti?
    poi mi restituisce oltre la data anche 11/01/2010 0.00.00
    perchè?
    le ore si posso formattare?

  6. #6
    partendo dal presupposto che ogni server di database implementa le STORED PROCEDURE che sarebbero cosa buona e giusta per evitare qualsiasi tipo di problema, per convertire la tua data nel formato che ti ho descritto sopra devi fare come in questo esempio:
    codice:
    DateTime date = DateTime.Now;
    string dateToQuery = date.ToString("yyyymmdd");
    // poi crei la tua query sql.
    Chi sbaglia, apprende meglio di chi non ha mai commesso errori.
    DOT.NET Addicted since 2006 (My Blog)

  7. #7
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Originariamente inviato da RoBYCoNTe
    partendo dal presupposto che ogni server di database implementa le STORED PROCEDURE che sarebbero cosa buona e giusta
    Quoto, il provider che sta nel mezzo provvede alla giusta formattazione, in presenza di parametri. Sarebbe utile adottare SEMPRE questo criterio

  8. #8
    Utente di HTML.it L'avatar di GabbOne
    Registrato dal
    Mar 2006
    Messaggi
    577
    Originariamente inviato da x69asterix
    posso settare il campo in datetime, ma per i record già inseriti?
    poi mi restituisce oltre la data anche 11/01/2010 0.00.00
    perchè?
    le ore si posso formattare?
    Be il problema effettivamente cè io proverei cosi

    1) creo una nuovo campo nella tabella incriminata e lo setterei come datetime

    2) mi scriverei una procedura che per ogni record della tabella trasformi il valore testuale della data in un datetime e lo registri nel nuovo campo.
    Ad esempio
    codice:
    int anno,mese,giorno;
    //faccio la query e mi calcolo anno mese e giorno
    
    DateTime _data = new DateTime(anno, mese, giorno);
    
    //scrivo la data nel nuovo campo
    3)Adesso ci sono due possibilità una è che da ora in avanti usi entrambe le colonne in modo tale che il resto del sistema non risenta della modifica e le nuove funzionalità si appogino sulla nuova colonna ed in questo caso tutto ok tranne per il fatto che dovresti modificare solo i punti dell'applicazione dove fai inserimenti/modifiche dei record della tabella modificata visto che adesso hai un campo in piu. L'unico vantaggio che hai con questa soluzione è che nn dovresti avere problemi per le funzionalità che utilizzano questa tabella in sola lettura

    Oppure eliminare la vecchia colonna e rivedere tutte le query che toccano la tabella modificata. Secondo me la seconda è la scelta migliore ma dipende dal tuo caso.

    Originariamente inviato da x69asterix

    poi mi restituisce oltre la data anche 11/01/2010 0.00.00
    perchè?
    le ore si posso formattare?
    Con il DateTime hai un'ampia scelta di formattazione , tenendo poi conto del fatto che puoi sempilcemente accedere ad ogni parte che compone la data (Anno, mese ...)

  9. #9
    Utente di HTML.it L'avatar di x69asterix
    Registrato dal
    Jan 2005
    Messaggi
    1,303
    ma giusto per capirci ma le ore si possono formattare

  10. #10
    Utente di HTML.it L'avatar di x69asterix
    Registrato dal
    Jan 2005
    Messaggi
    1,303
    ho settato il campo a datetime ho inserito un nuovo recor e il campo settato a datetime mi inserisce anche le ore.
    c'è una via d'uscita

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.