Compartir a través de


Enlaces y conversiones (OLE DB)

En esta sección se describe cómo convertir entre datetime valores y datetimeoffset . Las conversiones descritas en esta sección ya están proporcionadas por OLE DB o son una extensión coherente de OLE DB.

El formato de literales y cadenas para fechas y horas en OLE DB suele seguir iso y no depende de la configuración regional del cliente. Una excepción es DBTYPE_DATE, donde el estándar es OLE Automation. Sin embargo, dado que SQL Server Native Client solo convierte entre tipos cuando los datos se transmiten al cliente o desde él, no hay forma de que una aplicación obligue a SQL Server Native Client a convertir entre DBTYPE_DATE y formatos de cadena. De lo contrario, las cadenas usan los siguientes formatos (el texto entre corchetes indica un elemento opcional):

  • El formato de datetime las cadenas y datetimeoffset es:

    aaaa-milímetro-dd[ hh:mm:ss[.9999999][ ?? hh:mm]]

  • El formato de time las cadenas es:

    hh:mm:ss[.9999999]

  • El formato de date las cadenas es:

    aaaa-milímetro-Dd

Nota:

Las versiones anteriores de SQL Server Native Client y SQLOLEDB implementaron conversiones OLE, en caso de error en las conversiones estándar. Como resultado, algunas conversiones realizadas por SQL Server Native Client 10.0 y versiones posteriores difieren de la especificación OLE DB.

Las conversiones de cadenas permiten flexibilidad en el espacio en blanco y el ancho del campo. Para obtener más información, vea la sección "Formatos de datos: cadenas y literales" en Compatibilidad con tipos de datos para las mejoras de fecha y hora de OLE DB.

A continuación se muestran reglas de conversión generales:

  • Cuando una cadena se convierte en un tipo de fecha y hora, la cadena se analiza primero como un literal ISO. Si se produce un error, la cadena se analiza como un literal de fecha OLE, que tiene componentes de hora.

  • Si no hay tiempo, pero el receptor puede almacenar el tiempo, la hora se establece en cero. Si no hay ninguna fecha, pero el receptor puede almacenar una fecha, la fecha se establece en la fecha actual cuando se usan conversiones ISO y en 1899-12-30 cuando se usan conversiones OLE.

  • Si no hay ninguna zona horaria presente en el tipo de datos que usa el cliente, pero el servidor puede almacenar la zona horaria, se supone que los datos del cliente están en la zona horaria del cliente.

  • Si no hay ninguna zona horaria presente en el servidor, pero el cliente tiene información de zona horaria, se asume la zona horaria UTC. Esto difiere del comportamiento del servidor.

  • Si la hora está presente, pero el receptor no puede almacenar la hora, se omite el componente de hora.

  • Si la fecha está presente, pero el receptor no puede almacenar la fecha, se omite el componente de fecha.

  • Si se produce un truncamiento de segundos o fracciones de segundo al convertir de cliente a servidor, se devuelve DB_E_ERRORSOCCURRED y se establece el estado DBSTATUS_E_DATAOVERFLOW.

  • Si se produce un truncamiento de segundos o fracciones de segundo al convertir de servidor a cliente, se establece DBSTATUS_S_TRUNCATED

En esta sección

Conversiones realizadas desde el cliente al servidor
Describe las conversiones de fecha y hora realizadas entre una aplicación cliente escrita con SQL Server Native Client OLE DB y SQL Server 2008 (o posterior).

Conversiones realizadas desde el servidor al cliente
Describe las conversiones de fecha y hora realizadas entre SQL Server 2008 (o posterior) y una aplicación cliente escrita con OLE DB de SQL Server Native Client.

Véase también

Mejoras en la fecha y la hora (OLE DB)