Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo se describe cómo pasar fechas y horas a Microsoft SQL Server desde Dexterity en Microsoft Dynamics GP.
Se aplica a: Microsoft Dynamics GP
Número de KB original: 929786
Introducción
Asegúrese de que las fechas y las horas que pase a SQL Server estén en formatos que no entren en conflicto con los formatos especificados en la configuración regional del equipo. Es cierto cuando se escriben instrucciones SQL de paso a través o cláusulas Range Where en Dexterity o cuando se llama a procedimientos almacenados.
SQL Server reconoce fechas en los siguientes formatos:
- YYYYMMDD
- DD/MM/AAAA
Nota:
En estos formatos, AAAA representa el año de cuatro dígitos, MM representa el mes de dos dígitos y DD representa el día de dos dígitos.
SQL Server reconoce las horas en los siguientes formatos:
- HH:MM:SS (para el formato de 24 horas)
- HH:MM:SS XX (para el formato de hora de 12 horas)
Nota:
- En estos formatos, HH representa la hora de dos dígitos, MM representa el minuto de dos dígitos y SS representa el segundo dígito.
- En el formato de 12 horas, reemplace XX por AM, am, PM o pm.
Puede usar la función str() para convertir una fecha o una hora en un valor de cadena. A continuación, este valor de cadena se pasa a SQL Server. En esta situación, la configuración regional del equipo determina el formato del valor de cadena que se pasa a SQL Server. Por lo tanto, puede producirse el siguiente comportamiento:
Si se especifica el formato de fecha DD/MM/AAAA en la configuración regional del equipo, la fecha que se pasa a SQL Server es incorrecta durante los primeros 12 días de cada mes. Además, en cada día restante del mes, SQL Server genera el siguiente mensaje de error de SQL 241:
Error de sintaxis al convertir fecha y hora desde la cadena de caracteres.
Si el formato de hora de 12 horas junto con una abreviatura diferente de "AM", "am", "PM" o "pm" se especifica en la configuración regional del equipo, SQL Server genera el siguiente mensaje de error de SQL 241.
Error de sintaxis al convertir datetime de la cadena de caracteres.
Nota:
Por ejemplo, si el formato de hora de 12 horas junto con A.M. o p.m. se especifica en la configuración regional del equipo, SQL Server genera este mensaje.
Pasar fechas a SQL Server desde Dexterity
Para pasar fechas a SQL Server desde Dexterity, use la función sqlDate en lugar de la función str(). La función sqlDate está integrada en Microsoft Dynamics GP. Para dar formato a una fecha, puede llamar a esta función en el código que escriba.
Nota:
La función sqlDate no agrega las comillas simples necesarias al pasar la fecha a SQL Server. Por lo tanto, incluya el resultado de la función mediante comillas simples.
Transferir tiempos a SQL Server desde Dexterity
Microsoft proporciona ejemplos de programación con fines ilustrativos únicamente, sin ninguna garantía, ya sea expresa o implícita. Lo que incluye, pero no está limitado a, las garantías implícitas de comerciabilidad o idoneidad para un propósito determinado. En este artículo se da por supuesto que está familiarizado con el lenguaje de programación que se muestra y con las herramientas empleadas para crear y depurar procedimientos. Los ingenieros de soporte técnico de Microsoft pueden explicarle la funcionalidad de un determinado procedimiento. Sin embargo, no modificarán estos ejemplos para proporcionar funcionalidad o procedimientos de construcción agregados para satisfacer sus requisitos específicos.
Para pasar valores de tiempo a SQL Server desde Dexterity, debe usar una función personalizada que cree en lugar de la función str(). Debe crear una función porque Microsoft Dynamics GP no tiene una función que formatee la hora como lo hace la función sqlDate con las fechas.
En el ejemplo de código siguiente se crea una función sqlTime que pasa el tiempo a SQL Server.
{ Global Function : sqlTime }
function returns string OUT_String;
in time IN_Time;
OUT_String = pad(str(hour(IN_Time)), LEADING, CH_0, 2) + CH_COLON +
pad(str(minute(IN_Time)), LEADING, CH_0, 2) + CH_COLON +
pad(str(second(IN_Time)), LEADING, CH_0, 2);
Para obtener más información, vea Cómo escribir instrucciones SQL "Passthrough" y cláusulas "Range Where" en Microsoft Great Plains Dexterity.