La fonction Convert obtient la date de SQL Server champ DateTime avec une requête Visual FoxPro

Cet article explique comment utiliser la fonction SQL Server CONVERT() pour extraire la partie date d’un champ DateTime SQL avec une requête Visual FoxPro.

Version d’origine du produit : Visual FoxPro
Numéro de la base de connaissances d’origine : 308133

Résumé

Les dates stockées dans une table SQL Server sont stockées en tant que type de données DateTime. Vous pouvez utiliser la fonction SQL Server CONVERT() pour extraire la partie date d’un champ DateTime SQL avec une requête Visual FoxPro, par exemple :

SELECT CONVERT(CHAR(10), <field name>, 101) FROM <table name>

Vous pouvez toujours fournir uniquement la date lors de la spécification d’une condition de filtre dans la requête. L’heure n’est pas requise dans l’expression. Par exemple :

SELECT CONVERT(CHAR(10), <field name>, 101) FROM <table name> ;
 WHERE <field name> = '01-01-1999'

Les premier et troisième paramètres de l’appel de fonction ci-dessus (CHAR(10) et 101) sont spécifiques à l’extraction de DateTime. La rubrique SQL Server documentation en ligne de la fonction CONVERT décrit les autres options disponibles.

Informations supplémentaires

L’exemple de code Visual FoxPro suivant se connecte à SQL Server et récupère des données. Le code utilise la fonction SQL CONVERT() pour extraire la partie date du champ DateTime « ORD_DATE ». Le type de données retourné par la commande CONVERT est CHARACTER dans Visual FoxPro.

Pour utiliser cet exemple, procédez comme suit :

  1. Collez le code suivant dans un nouveau programme dans Visual FoxPro :

    *!* Enter your specific SQL Server information here.
    #DEFINE SQL_NAME " "
    #DEFINE SQL_UID " "
    #DEFINE SQL_PWD " "*~~~~~~~~~~~
    
    LOCAL lcSQLConnStr, ;
     lnSQLConnHandle, ;
     lnSQLExecSuccess
    
    lcSQLConnStr = "DRIVER={SQL Server};SERVER=" + SQL_NAME + ;
    ";DATABASE=PUBS;UID=" + SQL_UID + ";PWD=" + SQL_PWD
    
    lnSQLConnHandle = SQLSTRINGCONNECT(lcSQLConnStr)
    IF lnSQLConnHandle < 1
     LOCAL laErrArray[1]
     AERROR(laErrArray)
     WAIT WINDOW "Unable to connect:" + CHR(13) + laErrArray[3]
     RETURN .F.
    ENDIF
    
    lnSQLExecSuccess = SQLEXEC(lnSQLConnHandle, "SELECT stor_id, ord_num, ;
     CONVERT(CHAR(10), ord_date, 101) AS ord_date, qty, ;
     payterms, title_id from sales", "RESULTS")
    
    *!* Note that you can still use just a date value if using a WHERE clause
    *!* to filter the data:
    *!* lnSQLExecSuccess = SQLEXEC(lnSQLConnHandle, "SELECT stor_id, ord_num, ;
    *!* CONVERT(CHAR(10), ord_date, 101) AS ord_date, qty, payterms, ;
    *!* title_id from sales WHERE ord_date < '10/28/1993'", "RESULTS")
    
    IF lnSQLExecSuccess < 1
     LOCAL laErrArray[1]
     AERROR(laErrArray)
     WAIT WINDOW "SQLEXEC() Failed:" + CHR(13) + laErrArray[3]
    ENDIF
    
    SQLDISCONNECT(lnSQLConnHandle)
    
    IF SELECT("RESULTS") > 0
     SELECT RESULTS
     BROWSE NOWAIT
    ENDIF
    
  2. Entrez votre nom d’SQL Server, votre ID d’utilisateur et votre mot de passe en haut du code, là où cela est indiqué.

  3. Enregistrez et exécutez le code.

References

Pour plus d’informations sur la fonction SQLConvert, consultez SQL Server documentation en ligne.