Conversiones de SQL Server Native Client (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, 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 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. 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 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 SQL Server Native Client OLE DB y SQL Server 2008 (10.0.x) (o posterior).
Conversiones realizadas de servidor a cliente
Describe las conversiones de fecha y hora realizadas entre SQL Server 2008 (10.0.x) (o posterior) y una aplicación cliente escrita con OLE DB de SQL Server Native Client.