Entre Foxpro article

voix
0

Je cherche actuellement des requêtes foxpro, alias si SQL où en état d'ébriété et j'ai besoin d'aide pour comprendre comment quelque chose fonctionne comme je suis complètement nouveau pour FOXPRO.

SELECT keyfld, SUBSTR(CCB_SERIAL,11,2) AS a ;
FROM g:\mirror\DBFS\CCB ;
WHERE 
(BETWEEN({^2018-01-01},pl_st_dt, pl_end_dt) or 
BETWEEN({^2018-03-31},pl_st_dt,pl_end_dt)) 

Ma compréhension de la façon d'interpréter les 2 dernières lignes est

where
     pl_st_dt >= '2018-01-01' OR
     pl_end_dt >= '2018-01-01' OR
     pl_st_dt <= '2018-03-31' OR
     pl_end_dt <= '2018-03-31'

Est-ce exact?

Je suis en train de prendre une requête et d'écrire l'foxpro version équivalente t-sql.

Créé 27/11/2018 à 15:20
source utilisateur
Dans d'autres langues...                            


2 réponses

voix
2

Pas assez.

BETWEEN il est équivalent à:

({^2018-01-01} BETWEEN pl_st_dt and pl_end_dt) or 
({^2018-03-31} BETWEEN pl_st_dt and pl_end_dt)

Donc, votre équivalence serait:

WHERE
  (pl_st_dt <= '2018-01-01' AND '2018-01-01' <= pl_end_dt)
  OR
  (pl_st_dt <= '2018-03-31' AND '2018-03-31' <= pl_end_dt)
Créé 27/11/2018 à 15:31
source utilisateur

voix
0

Si vous ne parlez pas à SQL Server, il sera plus rapide d'utiliser le format de date explicite FoxPro plutôt qu'une chaîne. C'est, {^ 01/01/2018} plutôt que « 01/01/2018 ».

En outre moins sujette aux erreurs, car la chaîne peut être interprétée de différentes manières, en fonction des paramètres de date FoxPro.

Une autre chose à garder à l'esprit est que les tables FoxPro ont à la fois la date et les types de données datetime. Date est intégrale (ce qui signifie des comparaisons exactes sont fiables), mais IIRC, celui-ci a une résolution inférieure à la milliseconde. Encore une fois IIRC, lorsque l'on compare les deux, FoxPro tronque simplement un DateTime à une date, alors méfiez-vous des résultats inattendus.

Créé 21/12/2018 à 15:59
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more