[ASP.NET] DateTime opslaan in SQL database

Pagina: 1
Acties:

  • _Rob
  • Registratie: Januari 2003
  • Laatst online: 17-04 08:49
Het opslaan van de DateTime gaat perfect. Ik zou echter willen dat de DateTime in de database stond als "01/01/03" i.p.v. "1/1/03". Ik heb gezocht op google en in de SQL Server help niks kon mij enige opheldering geven.

ASP:
1
2
3
4
Dim Tijd As String = (lblDate.Text & " " & uur.Text & ":" & min.Text & ":00")

                Dim mijnFormat As New CultureInfo("nl-NL", True)
                Dim mijnDatum As DateTime = DateTime.ParseExact(Tijd, "dd.MM.yy HH:mm:ss", mijnFormat)


Hierna slaat .NET deze op in zijn database maar niet met de datum die ik zou willen.

Alvast bedankt!

_Rob

[ Voor 11% gewijzigd door _Rob op 17-09-2003 10:06 ]

Webdeveloping... -counts to 10- Sigh...


Verwijderd

In principe is dat niet nodig. Zodra je de datum opvraagt kun je met formattering ervoor zorgen dat de datum in de juiste vorm gepresenteerd wordt. Mijns inziens is het opslaan van een datum in een bepaald formaat in SQL Server niet mogeljik.

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Het staat zelfs nog anders in de database (als twee ints). Wat jij ziet in Enterprise manager is gewoon een van de mogelijke representaties van een datum/tijd.

Je bent zelf verantwoordelijk voor het correcte formaat als je de data weergeeft.

Je kunt kijken naar het SET DATEFORMAT commando, maar bovenstaande blijft van kracht.

Oops! Google Chrome could not find www.rijks%20museum.nl


  • CrashOne
  • Registratie: Juli 2000
  • Niet online

CrashOne

oOoOoOoOoOoOoOoOoOo

Session.lcid, weet alleen niet of dat in asp.net nog bestaat.

Huur mij in als freelance SEO consultant!


  • _Rob
  • Registratie: Januari 2003
  • Laatst online: 17-04 08:49
Wat ik ermee wil bereiken is dat ik kan zoeken op datum b.v. 02 ipv alleen 2. Ik ga even kijken hoe dat DATEFORMAT precies werkt. Alvast bedankt!

Webdeveloping... -counts to 10- Sigh...


  • whoami
  • Registratie: December 2000
  • Laatst online: 22:54
_Rob schreef op 17 september 2003 @ 10:00:
Wat ik ermee wil bereiken is dat ik kan zoeken op datum b.v. 02 ipv alleen 2. Ik ga even kijken hoe dat DATEFORMAT precies werkt. Alvast bedankt!
:?
Ik snap hier niet goed wat je bedoeld....

Trouwens, jouw manier van opslaan (met die CultureInfo) vind ik echt niet goed. Je laat het opslaan, en in welk formaat het opgeslagen wordt, beter over aan SQL Server. Het enige waar jij dan moet voor zorgen is dat je de datum in het door de gebruiker gewenste formaat toont.

[ Voor 33% gewijzigd door whoami op 17-09-2003 10:05 ]

https://fgheysels.github.io/


  • _Rob
  • Registratie: Januari 2003
  • Laatst online: 17-04 08:49
P_de_B vertelde dat de query in principe als twee digits wordt opgeslagen maar ik het in enterprise manager gewoon zie als representatie. Echter wanneer ik op datum zoek en ik type in: "01" dan vind deze niks. Wanneer ik intik "1" dan komen alle datums te voorschijn.
Trouwens, jouw manier van opslaan (met die CultureInfo) vind ik echt niet goed. Je laat het opslaan, en in welk formaat het opgeslagen wordt, beter over aan SQL Server. Het enige waar jij dan moet voor zorgen is dat je de datum in het door de gebruiker gewenste formaat toont.
Bedankt voor de tip!

[ Voor 58% gewijzigd door _Rob op 17-09-2003 10:13 ]

Webdeveloping... -counts to 10- Sigh...


  • whoami
  • Registratie: December 2000
  • Laatst online: 22:54
_Rob schreef op 17 September 2003 @ 10:06:
P_de_B vertelde dat de query in principe als twee digits wordt opgeslagen maar ik het in enterprise manager gewoon zie als representatie. Echter wanneer ik op datum zoek en ik type in: "01" dan vind deze niks. Wanneer ik intik "1" dan komen alle datums te voorschijn.
Maar , wat wil je dan bereiken met die 1 ? Wat stelt die 1 in jouw ogen dan voor?
Een datum wordt in SQL Server idd als 2 integers opgeslagen.
De eerste integer is het datum gedeelte. Die integer geeft een aantal dagen aan sinds een bepaalde datum (Ik dacht, ergens een datum in 1750 ofzo). Als je die begindatum neemt, en het aantal dagen dat opgeslagen is in die integer erbij optelt, kom je op de datum uit die je wilt opslaan.
Het 2de getal doet hetzelfde, maar dan voor de tijd.

https://fgheysels.github.io/


  • _Rob
  • Registratie: Januari 2003
  • Laatst online: 17-04 08:49
Volgens mij 1950, want in 2050 gaat SQL over de zeik (ala 2k bug?) ;)

Met die 1 wil ik niet specifieks bereiken maar met 01. Stel, vandaag is het 2 september (02.09) dan wil ik dus kunnen invoeren 02 en de query van 2 september zien. Dit gaat dus mis maar wanneer ik 2 intik dan komt de query wel tevoorschijn.

Webdeveloping... -counts to 10- Sigh...


  • whoami
  • Registratie: December 2000
  • Laatst online: 22:54
_Rob schreef op 17 September 2003 @ 10:26:
Volgens mij 1950, want in 2050 gaat SQL over de zeik (ala 2k bug?) ;)
Wat doe je dan wel?
Een datetime veld kan datums tot in 9999 bevatten dacht ik.
Gebruik je een smalldatetime veld misschien?
Met die 1 wil ik niet specifieks bereiken maar met 01. Stel, vandaag is het 2 september (02.09) dan wil ik dus kunnen invoeren 02 en de query van 2 september zien. Dit gaat dus mis maar wanneer ik 2 intik dan komt de query wel tevoorschijn.
Hint: kijk eens naar de datetime functies van SQL Server. Je hebt functies om de dag, het jaar, de maand, etc... uit een datum te extracten.
Bv:
code:
1
SELECT * FROM tabel WHERE day(eendatum) = 2


(Ik weet nu wel niet zo van buiten of die day() wel een goeie functie is, 'k heb de BOL hier niet staan).

https://fgheysels.github.io/


  • _Rob
  • Registratie: Januari 2003
  • Laatst online: 17-04 08:49
[quote]whoami schreef op 17 September 2003 @ 10:33:
[...]

Wat doe je dan wel?
Een datetime veld kan datums tot in 9999 bevatten dacht ik.
Gebruik je een smalldatetime veld misschien?


[...]
[quote]

Uit de help file:
if two digit year cutoff is 2050 (default), 25 is interpreted as 2025 and 50 is interpreted as 1950. To avoid ambiguity, use four-digit years.
Dus je hebt gelijk dat deze tot 9999 kan doorgaan met 4 digits ;)

Bedankt voor de tip trouwens ik ga kijken of het lukt!

Webdeveloping... -counts to 10- Sigh...


  • whoami
  • Registratie: December 2000
  • Laatst online: 22:54
[quote]_Rob schreef op 17 September 2003 @ 10:47:
[quote]whoami schreef op 17 September 2003 @ 10:33:
[...]

Wat doe je dan wel?
Een datetime veld kan datums tot in 9999 bevatten dacht ik.
Gebruik je een smalldatetime veld misschien?


[...]
Uit de help file:

[...]


Dus je hebt gelijk dat deze tot 9999 kan doorgaan met 4 digits ;)

Bedankt voor de tip trouwens ik ga kijken of het lukt!
Ah, idd. Als je je jaar maar met 2 digits in geeft, dan gaat SQL Server adhv die cut-off gaan bepalen of het jaar in 1900 of in 2000 ligt.

https://fgheysels.github.io/


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
whoami schreef op 17 september 2003 @ 10:14:
[...]

sinds een bepaalde datum (Ik dacht, ergens een datum in 1750 ofzo). .
1753 om precies te zijn :-)


En dat mensen in de war zijn met 2050 komt omdat dat het standaard 'cut off year is' 49 word gezien als 2049 terwijl 51 word gezien als 1951. Dit kun je instellen in de eigenschappen van de database.

EDIT: zucht, sorry Whoami, niet gelezen dat je dit al gepost had,.........

en om voorgoed een einde te maken aan alle problemen SELECT en INSERT een datum altijd al JJJJ/MM/DD dit wordt door elke database die ik ken goed begrepen

[ Voor 8% gewijzigd door P_de_B op 17-09-2003 13:28 ]

Oops! Google Chrome could not find www.rijks%20museum.nl

Pagina: 1