Функция Convert получает дату из поля DateTime SQL Server с помощью запроса Visual FoxPro

В этой статье описывается, как использовать функцию SQL Server CONVERT() для извлечения части даты поля даты SQL DateTime с помощью запроса Visual FoxPro.

Исходная версия продукта: Visual FoxPro
Исходный номер базы знаний: 308133

Сводка

Даты, хранящиеся в таблице SQL Server, хранятся как тип данных DateTime. Функцию SQL Server CONVERT() можно использовать для извлечения части поля даты SQL DateTime с помощью запроса Visual FoxPro, например:

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

Вы по-прежнему можете указать только дату при указании условия фильтра в запросе. Время не требуется в выражении. Например:

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

Первый и третий параметры в приведенном выше вызове функции (CHAR(10) и 101) относятся к извлечению даты из DateTime. В разделе электронной документации по SQL Server для функции CONVERT описаны другие доступные варианты.

Дополнительная информация

Следующий пример кода Visual FoxPro подключается к SQL Server и извлекает данные. Код использует функцию SQL CONVERT() для извлечения части даты в поле DateTime "ORD_DATE". Тип данных, возвращаемый командой CONVERT, — CHARACTER в Visual FoxPro.

Чтобы использовать этот пример, выполните следующие действия.

  1. Вставьте следующий код в новую программу в 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. Введите имя SQL Server, идентификатор пользователя и пароль в верхней части кода, где указано.

  3. Сохраните и запустите код.

Ссылки

Дополнительные сведения о функции SQL Convert см. в SQL Server электронной документации.