[C#/Access] Date/Time ophalen uit db - tijd weglaten

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • ShAd0w
  • Registratie: December 2004
  • Laatst online: 21-08 19:13
Okee, ik heb heel het internet zojuist af zitten speuren en ik krijg het antwoord nergens gevonden, ook niet hier op het forum, dus bij deze toch om hulp vragen via een zelf aangemaakt topic.
Ben er geen fan van want meestal is het dan zo dat het niet opgelost kan worden als het nog niet op internet te vinden is.... =P

In ieder geval:
Ik ben een programmaatje aan het schrijven in C#, ben 2de jaars Software Engineering en ik ken de nodige basis.
Probleem is echter met de Date/Time functie in C# of Access.
Ik laat iemand zijn profiel in vullen waarna zijn gegevens opgeslagen worden in een database.
Zijn geboortedatum is eerst gewoon een string die genoteerd moet worden als *-*-****
Deze slaat hij dan op in de Access-db als Date/Time.

Als ik deze datum dan weer ophaal, krijg ik dit terug:
(voorbeeld hij geeft in 1-1-1999)
krijg ik terug: 1-1-1999 00:00:00

Hoe kan ik ervoor zorgen dat ik dat tijdstip niet terug krijg? Ik heb alleen de datum nodig.
Is dit een code of query aanpassing binnen C# of moet ik iets anders instellen binnen in de database.
Beiden heb ik uit zitten zoeken maar is nog steeds niet gelukt.

Acties:
  • 0 Henk 'm!

  • BM
  • Registratie: September 2001
  • Laatst online: 20:37

BM

Moderator Spielerij
Access heeft geen aparte datatypes voor datum en tijd. Als je alleen een tijd insert zal er een default datum bijgeplakt worden, en bij alleen een datum een default tijd, zoals je al gevonden had. Volgens mij is er geen manier om daar onder uit te komen. Vanaf SQL Server 2008 (meen ik) zijn er aparte datatypes voor datum en voor tijd.
Tot die tijd zou je wat kunnen proberen met DateTime.Date en DateTime.Time.

Xbox
Even the dark has a silver lining | I'm all you can imagine times infinity, times three


Acties:
  • 0 Henk 'm!

  • Haan
  • Registratie: Februari 2004
  • Laatst online: 20:53

Haan

dotnetter

Wat boeit het of je wel of geen tijd terug krijgt? In .Net heeft een DateTime object gewoon allerlei properties die je kan gebruiken naar believen. Zoals BM zegt, gebruik alleen de Date property, of doe ToString("MM/dd/yyyy") o.i.d.

Kater? Eerst water, de rest komt later


Acties:
  • 0 Henk 'm!

  • ShAd0w
  • Registratie: December 2004
  • Laatst online: 21-08 19:13
ik kan binnen VisualStudio geen command vinden om alleen de DateTime.Date of iets selecteren.
Wat ik nu heb:

code:
1
2
3
4
5
6
7
8
9
10
con = db.LaadPersonen();
            foreach (Persoon p in con)
            {
                if (p.Samenvoegen == cbHoofdNaam.Text)
                {
                    Hoofdscherm.ActiveForm.Hide();
                    LoggedIn l = new LoggedIn(p.Samenvoegen, p.Adres, p.Postcode, p.Woonplaats, Convert.ToString(p.Geboortedatum);
                    l.Show();
                }
            }

Is de laatste "p.Geboortedatum" een DateTime in de database.
De attributen die hij mee geeft, worden daarna meteen in een label verwerkt in het 'LoggedIn" scherm.
Een van die labels is dus zoals je begrijpt een geboortedatum, maar dan komt er te staan 1-1-1999 0:00:00

Acties:
  • 0 Henk 'm!

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 23:59

TeeDee

CQB 241

Zoals Haan zegt:
C#:
1
p.Geboortedatum.ToString("MM/dd/yyyy");

Misschien is het handig om je LoggedIn class te wijzigen zodat deze geen string hoeft te hebben, maar gewoon een datetime. Zoals het hoort.

Heart..pumps blood.Has nothing to do with emotion! Bored


Acties:
  • 0 Henk 'm!

  • PoweRoy
  • Registratie: April 2002
  • Laatst online: 17-09 00:55

PoweRoy

funky!

Zoals gezegt, gewoon toString, zie Teedee post

Tijden erbij kan altijd handig zijn ivm UTC/zomertijd/wintertijd gerelateerde dingen.
BV. 19-1-2010 00:00:00 minus een uur ivm zomer/wintertijd is de dag de 18e ;)

[This space is for rent]


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
TeeDee schreef op dinsdag 26 januari 2010 @ 09:34:
Zoals Haan zegt:
C#:
1
p.Geboortedatum.ToString("MM/dd/yyyy");

Misschien is het handig om je LoggedIn class te wijzigen zodat deze geen string hoeft te hebben, maar gewoon een datetime. Zoals het hoort.
Of gewoon ToShortDateString of ToLongDateString zodat er ook nog gewoon rekening gehouden word met de locale settings

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • Haan
  • Registratie: Februari 2004
  • Laatst online: 20:53

Haan

dotnetter

Als p.Geboortedatum een DateTime object is, moet hij ook een property Date hebben. Dus zou Convert.ToString(p.Geboortedatum.Date) ook moeten werken. Maar wat Teedee zegt is beter.
edit:
En wat Woy zegt is inderdaad nog beter ;)

[ Voor 12% gewijzigd door Haan op 26-01-2010 09:51 ]

Kater? Eerst water, de rest komt later


Acties:
  • 0 Henk 'm!

  • ShAd0w
  • Registratie: December 2004
  • Laatst online: 21-08 19:13
Okee, met die laatste code kon ik iets...
echter heb ik heel wat code daarna om moeten gooien.

Zoals gezegd werd heb ik alle 'geboortedatums' veranderd in DateTime.
Hij gaf dus naar het nieuwe form een DateTime mee, pas daar paste ik de datetime aan, dat hij alleen de datum mee gaf.
code:
1
lbLogPromotorGeboorte.Text = geboortedatum.ToString("MM/dd/yyyy");


aangezien ik hem niet mee kon geven in de andere form.
Bedankt!
Ben weer wat wijzer geworden :D

Acties:
  • 0 Henk 'm!

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 23:59

TeeDee

CQB 241

Woy schreef op dinsdag 26 januari 2010 @ 09:49:
[...]

Of gewoon ToShortDateString of ToLongDateString zodat er ook nog gewoon rekening gehouden word met de locale settings
Indien nodig is dat inderdaad nog beter.

Heart..pumps blood.Has nothing to do with emotion! Bored


Acties:
  • 0 Henk 'm!

  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Haan schreef op dinsdag 26 januari 2010 @ 09:50:
Als p.Geboortedatum een DateTime object is, moet hij ook een property Date hebben. Dus zou Convert.ToString(p.Geboortedatum.Date) ook moeten werken. Maar wat Teedee zegt is beter.
edit:
En wat Woy zegt is inderdaad nog beter ;)
DateTime.Date geeft nog steeds een DateTime object terug. De TS zal hier echter weinig verschil opmerken omdat de tijd (vanuit de database) al 0:00:00 is. Echter zou de tijd 15:45:12 zijn geweest dan wordt het tijd gedeelte gereset naar 0:00:00.

Ik gebruik Date ook vaak als einddatum van een datum selectie.
C#:
1
2
3
4
5
SqlCommand cmd = new SqLCommand();
cmd.CommandText = "select * from Customers where (RegistrationDate between @StartDate and @EndDate)";

cmd.Parameters.AddWithParam("@StartDate", startDate.Date);
cmd.Parameters.AddWithParam("@EndDate", endDate.Date.AddDays(1));


Hoe vaak ik developers niet de onderstaande constructie heb zien gebruiken ipv van de Date property.
C#:
1
DateTime date = new DateTime(mydate.Year, mydate.Month, mydate.Day);

If it isn't broken, fix it until it is..


Acties:
  • 0 Henk 'm!

  • PoweRoy
  • Registratie: April 2002
  • Laatst online: 17-09 00:55

PoweRoy

funky!

Niemand_Anders schreef op dinsdag 26 januari 2010 @ 13:01:
[...]
Hoe vaak ik developers niet de onderstaande constructie heb zien gebruiken ipv van de Date property.
C#:
1
DateTime date = new DateTime(mydate.Year, mydate.Month, mydate.Day);
of
DateTime date = mydate.Date;

Niet goed gelezen, dit bedoel je juist...

[ Voor 7% gewijzigd door PoweRoy op 27-01-2010 10:57 ]

[This space is for rent]


Acties:
  • 0 Henk 'm!

  • Haan
  • Registratie: Februari 2004
  • Laatst online: 20:53

Haan

dotnetter

PoweRoy schreef op dinsdag 26 januari 2010 @ 14:13:
[...]


of
C#:
1
DateTime date = mydate.Date;
Even goed lezen, Niemand_Anders wil juist zeggen dat die constructie [accent="maxima"]een beetje dom[/accent] is ;)

Kater? Eerst water, de rest komt later


Acties:
  • 0 Henk 'm!

  • PoweRoy
  • Registratie: April 2002
  • Laatst online: 17-09 00:55

PoweRoy

funky!

Haan schreef op dinsdag 26 januari 2010 @ 14:50:
[...]

Even goed lezen, Niemand_Anders wil juist zeggen dat die constructie [accent="maxima"]een beetje dom[/accent] is ;)
whups inderdaad niet goed gelezen :>

[This space is for rent]

Pagina: 1