Au secours

vish - 2 oct. 2001 à 17:05
Itittep Messages postés 2 Date d'inscription dimanche 16 janvier 2005 Statut Membre Dernière intervention 19 janvier 2005 - 24 janv. 2005 à 15:43
salut
quelle la fonction qui pemet de convertir une date en entier CAD ça me donne le nombre de jours
exemple en windev
datetoint(24/01/1979)= un entier qui me donne le nombre de jours écoulé. merci

10 réponses

En VB, une date est stocké en interne sous forme de double, il suffit donc de faire CDble(Date) pour obtenir la contrepartie.

Est-ce que cela répond à ta question ?
0
peut etre que je suis bete
mais je dois exécuté ce type de requete:
select * from matable where downlaodsys(monchamp) between now and downlaodsys-4
mais ici il y a un erreur(imcompatible a cause de 4)
donc je sais pas
merci mon ami
0
D'abord avec quel outil travailles-tu, je ne connais pas la fonction Downlaodsys(), ni les mots clés BETWEEN et NOW, tout ce que je peux te dire c'est que ce n'est pas du VB ni du SQL.

Je crois me souvenir que BETWEEN est de l'Access mais j'ai jamais voulu y toucher.

Monchamp est de quel type ??

Avec cela je peux essayer de t'aider !
0
je travaille avec VB
between= sql
now()= date du jour en VB
downloadsys = le nom de mon champs contenant les dates
voila
je pense qu'il vaut mieux que je t'appelle sur ton portable
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
T'as sûrement pas oublié les guillemets, mais voici comment j'écrirais ta requête:

"select * from matable where downloadsys between" & str$(fix(cdbl(now))) & " and (downloadsys-4);"

Aussi, au cas où ça t'intéresse, j'ai ce code pour calculer le nombre de secondes depuis le 01/01/2000, il te suffirait de changer la variable BaseAn et p-ê de retravailler la fct un peu pour spécifier jour et mois.

Public Function TimeStamp() As Double
  '
  ' Calcule et retourne le nombre de secondes écoulées
  ' depuis le 1er Janvier 2000
  '
  ' Retourne -32768 SI la date de l'ordinateur est au
  ' moins une seconde avant celle de référence.
  '
  '
  ' Il est à noter que traditionnellement, 1/1/1980 est utilisé
  ' et plus rarement 1/1/1990, je prend le 1/1/2000 arbitrairement
  '
  ' Plus tard p-ê modifier pour au moins pouvoir donner l'année de base,
  ' optionnellement encore plus tard ajouter mois et jour de cette année
  ' de base. Ex: X = TimeStamp(2000, 1, 1) -> 1er Jan 2000 est la base.
  '
  Dim dtLclDate As Date
  Dim iDiff1 As Integer      ' Différence entre l'année de référence et celle en cours
  Dim iCmpt As Integer
  Dim iNowTimer As Long
  
  
  Const UnJour = 86400           ' Nombre de secondes dans un jour
  Const TrenteJours = 2592000    ' Nombre de secondes dans un mois de trente jours
  Const SecondesAn = 31536000    ' Nombre de secondes dans une année
  Const SecondesAnBi = 31622400  ' Nombre de secondes dans une année bissextile
  Const BaseAn = 2000            ' L'année de base utilisée
  
  TimeStamp = 0     ' Par principe
  dtLclDate = Now   ' Date
  iNowTimer = Timer ' Durant l'exécution, on peux changer de jours alors on prend note tout de suite.
  
  iDiff1 = Year(dtLclDate) - BaseAn
  
  ' Si la date courante est avant la date de base erreur!
  If (iDiff1 < 0) Then
    TimeStamp = -32768
    Exit Function
  End If
  
  'Calcule les années complètées...
  iDiff1 = iDiff1 - 1 'Sinon calcule l'année en cours comme terminée!
  For iCmpt = 0 To iDiff1
    If Bissextile(iCmpt + BaseAn) Then
        TimeStamp = TimeStamp + SecondesAnBi
      Else
        TimeStamp = TimeStamp + SecondesAn
    End If
  Next iCmpt
  
  'Calcule les mois complétés...
  iDiff1 = Month(dtLclDate) - 1
  For iCmpt = 1 To iDiff1
    Select Case (iCmpt)
      Case 1, 3, 5, 7, 8, 10, 12 'En principe, on n'ira jamais jusqu'à 12
        TimeStamp = TimeStamp + (TrenteJours + UnJour)  '(31 * UnJour)
      
      Case 4, 6, 9, 11
        TimeStamp = TimeStamp + TrenteJours  '(30 * UnJour)
      
      Case 2
        If Bissextile(Year(dtLclDate)) Then
            TimeStamp = TimeStamp + (TrenteJours - UnJour) '(29 * UnJour)
          Else
            TimeStamp = (TimeStamp + TrenteJours) - (UnJour * 2)  '(28 * UnJour)
        End If
      
'      Case Else
    End Select
  Next iCmpt
  
  'Calcule les jours complétés...
  iDiff1 = Day(dtLclDate) - 1
  TimeStamp = TimeStamp + (UnJour * iDiff1)
  
  'Ajouter les secondes depuis minuit...
  TimeStamp = TimeStamp + iNowTimer

End Function
0
Désolé, je n'ai pas de portable (eh oui je résiste encore à l'envahisseur et pourtant je ne suis pas breton)!!!

Autant pour moi, pour Between je ne savais pas, pour Now, j'avais oublié (j'utilises plutôt Date().

Il faut soit:

- Jouer avec les dates (au format date) du style Day(Now). Attention i y a une subtilité avec SQL au sujet du format.

-Il y a aussi une fonction du style datediff() (désolé je ne me rappelle plus le nom).

J'espère que cela t'aidera, sinon j'essaierais de trouver un bout de code
0
je ne sais pas si la requete est bonne mais je suis sur que tu ne peux pas faire " downloadsys-4 car il y aura une erreur d'imcompatibilité car downloadsys est sous format(dd/mm/yyyy) dans ma table. donc maintenant???
merci mon ami
ps: puis je utiliser dateadd dans une requete...
0
Tu peux utiliser DateDiff() qui renvoie un entier signé indiquant la différence entre la partie des deux dates que tu compares.
0
cs_electro Messages postés 60 Date d'inscription dimanche 10 novembre 2002 Statut Membre Dernière intervention 30 juin 2011
27 sept. 2004 à 01:08
Essaye la fonction dateversentier(tadate)

Nicolas
0
Itittep Messages postés 2 Date d'inscription dimanche 16 janvier 2005 Statut Membre Dernière intervention 19 janvier 2005
24 janv. 2005 à 15:43
en W_langage le langage de windev :
l'ordre est dateversentier(monchamps)
momchamps peut une un rubrique fentre, une rubrique fichier,
une rubrique de requete , une variable locale ou globale
ex
dateNumerique est un entier = dateversentier(monchamp)

le contraite est

dateChaine est une chaine = EntierversDate(DateNumerique)

le tout est très bien expliqué dans le cours autoformation

Alain Pettiti
a.pettiti@wanadoo.fr
0
Rejoignez-nous