Conversiones (OLE DB)
Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
En esta sección se describe cómo convertir entre 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 OLE Automation. Sin embargo, debido a que OLE DB Driver for SQL Server solamente convierte entre tipos cuando se transmiten datos a o desde el cliente, no hay ninguna manera de que una aplicación fuerce a OLE DB Driver for SQL Server 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:
aaaa-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:
aaaa-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. OLE DB Driver for SQL Server sigue el mismo comportamiento que SQL Server Native Client. Como resultado, algunas conversiones realizadas por OLE DB Driver for SQL Server 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, consulte 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
Conversiones realizadas de cliente a servidor
Describe las conversiones de fecha y hora realizadas entre una aplicación cliente escrita con OLE DB Driver for SQL Server 2008 (10.0.x) y versiones posteriores.
Conversiones realizadas de servidor a cliente
Describe las conversiones de fecha y hora realizadas entre SQL Server 2008 (10.0.x), y versiones posteriores, y una aplicación cliente escrita con OLE DB Driver for SQL Server.