Compartir a través de


Enlaces y conversiones (OLE DB)

En esta sección se describe cómo convertir entre los valores datetime y datetimeoffset. OLE DB ya proporciona las conversiones descritas en esta sección o son una extensión coherente de OLE DB.

El formato de literales y cadenas para las fechas y horas en OLE DB generalmente sigue la ISO y no depende de la configuración regional del cliente. Una excepción es DBTYPE_DATE, donde la norma es la automatización OLE. Sin embargo, debido a que SQL Server Native Client sólo convierte entre tipos cuando se transmiten datos a o desde el cliente, no hay ninguna manera de que una aplicación fuerce a SQL Server Native Client a convertir entre DBTYPE_DATE y los formatos de cadena. De lo contrario, las cadenas usan los formatos siguientes (el texto entre corchetes indica un elemento opcional):

  • El formato de las cadenas datetime y datetimeoffset es:

    yyyy-mm-dd[ hh:mm:ss[.9999999][ ± hh:mm]]

  • El formato de las cadenas time es:

    hh:mm:ss[.9999999]

  • El formato de las cadenas date es:

    yyyy-mm-dd

Nota

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

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

A continuación figuran las reglas de conversión generales:

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

  • Si no está presente la hora pero el receptor puede almacenar la hora, esta última se establece en cero. Si no hay ninguna fecha presente pero el receptor puede almacenar una, 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 en el tipo de datos que el cliente usa pero el servidor puede almacenar la zona horaria, se supone que los datos del cliente se encuentran en la zona horaria del cliente.

  • Si no hay ninguna zona horaria en el servidor pero el cliente tiene información de la zona horaria, se presupone la zona horaria UTC. Este comportamiento es diferente al del servidor.

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

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

  • Si se produce el 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 el truncamiento de segundos o fracciones de segundo se produce al convertir del servidor al cliente, se establece DBSTATUS_S_TRUNCATED.

En esta sección

Vea también

Conceptos