[SQL]Format van datum veranderen met datetime in query

Pagina: 1
Acties:
  • 1.876 views sinds 30-01-2008
  • Reageer

  • DarkShadow
  • Registratie: Juli 2000
  • Laatst online: 19-05 21:37
Hallo, ik haal informatie uit een database voor mn chart (gemaakt met owc). Alleen nu zit er in owc chart een bug dat als ik een reeks langer als 100 dagen heb, hij de lay out (eigenlijk alleen de format onder de x-as) helemaal veranderd en de chart wordt hierdoor een stuk lelijker. Deze bug heeft hij echter alleen als ik een kolom gebruik uit mn database met de tijd en de datum erin. Zonder tijd erbij is er geen enkel probleem.

Nu heb ik echter wel een kolom met datum en tijd nodig, dus dacht ik dat het probleem misschien ook opgelost zou zijn als ik met een query alleen de datum en niet de tijd eruit pakte. Nu had ik het volgende gemaakt:

code:
1
2
3
SELECT fictievedatum, synops as reeks, synops_t2m as element FROM beek 
WHERE ((fictievedatum BETWEEN CONVERT(DATETIME, '2003/1/1', 102) AND 
CONVERT(DATETIME, '2003/2/1', 102)) and voorspeltermijn=12)


Deze query werkt wel, alleen blijft de format van de datum helaas ongewijzigd :'(. Wat doe ik fout, ik zit al enkele weken met het probleem van die chart en ik zou zeer dankbaar zijn als jullie mij een eindje op weg konden helpen :)

Verwijderd

Het formaat van de datum die je selecteerd veranded niet ? Logisch, je doet ook niets om hem te veranderen, je hebt gewoon de veldnaam in de select staan.

Of snap ik het nu niet :?

  • whoami
  • Registratie: December 2000
  • Laatst online: 16:25
Je wilt de tijd eruit halen? Kan je dan niets doen met DATEPART oid ?

https://fgheysels.github.io/


  • DarkShadow
  • Registratie: Juli 2000
  • Laatst online: 19-05 21:37
nou ik wil alleen de datum eruit halen, en niet de tijd...

Kan ik dat datepart ook gewoon toepassen onder select, want convert werkt daar iig niet (vandaar deze 'oplossing')

  • whoami
  • Registratie: December 2000
  • Laatst online: 16:25
Met Convert cast je van het ene veldtype naar een ander, dus dat zal zowiezo niet doen wat jij wilt.

https://fgheysels.github.io/


Verwijderd

hoe bedoel je "Convert werkt niet in Select" ? Bij mij hier wel ! Alleen moet je een conversie naar een varchar doen, want iedere conversie naar een Datetime of Smalldatetime geeft een tijd terug.

code:
1
select convert(varchar,datumveld,103) from tabel

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Kun je niet gewoon een convert doen op het veldje in het SELECT deel van je query?

  • DarkShadow
  • Registratie: Juli 2000
  • Laatst online: 19-05 21:37
Verwijderd schreef op 04 mei 2004 @ 14:12:
hoe bedoel je "Convert werkt niet in Select" ? Bij mij hier wel ! Alleen moet je een conversie naar een varchar doen, want iedere conversie naar een Datetime of Smalldatetime geeft een tijd terug.

code:
1
select convert(varchar,datumveld,103) from tabel
jouw oplossing werkt goed in sql server, ik krijg dan idd de goede format terug...
Maar het probleem is dat de chart hem nu ziet als een char, dus een getal... Het moet dus wel een datetime zijn...

  • cameodski
  • Registratie: Augustus 2002
  • Laatst online: 06-11-2023
Begrijp ik het nou goed, als ik zeg dat je chart werkt als je tijd maar 00:00:00 is? Dan zou je namelijk een dubbele convert kunnen doen: eerst naar een varchar om je tijd weg te halen en vervolgens weer terug naar een datetime, omdat je chart een datetime nodig heeft.

Never underestimate the power of


Verwijderd

DarkShadow schreef op 04 mei 2004 @ 14:33:
[...]
jouw oplossing werkt goed in sql server, ik krijg dan idd de goede format terug...
Maar het probleem is dat de chart hem nu ziet als een char, dus een getal... Het moet dus wel een datetime zijn...
Ja, als je goed kijkt zie je dat ik hem converteer naar een VARCHAR ! Dat is namelijk de enige manier om van de tijd af te komen. SQL-Server heeft geen datumtype waar alleen maar een datum ( dus zonder tijd ) in zit.

  • DarkShadow
  • Registratie: Juli 2000
  • Laatst online: 19-05 21:37
ja dat zag ik, rustig maar ;), alleen in als ik met queryanalyzer de resultaten bekijk staat er gewoon nog bv 30/21/2003 terwijl in de chart bv gewoon 231 staat...

@cameodski, dat begrijp je goed :), is dat mogelijk?

Verwijderd

en SELECT Format(convert(varchar,datumveld,103), 'dd-mm-yyyy hh-mm-ss') As jouwWaarde?

Het is maar een gokje ;)

  • DarkShadow
  • Registratie: Juli 2000
  • Laatst online: 19-05 21:37
hmm dan is het toch geen datetime, en format kan toch niet in sql, alleen in access, of vergis ik me daarin? iig bedankt :)

edit: format is not a recognised functionname

kan hij dus idd niet :)

edit2:

credits naar cameodski :)

dit werkt:
code:
1
convert(datetime, convert(varchar,fictievedatum,103), 103) as datum


Dubbele convert dus, alleen zet hij onder de chart nu alleen de eerste datum, maar ik denk dat dat ergens anders aan ligt.

[ Voor 64% gewijzigd door DarkShadow op 04-05-2004 15:01 ]


  • DarkShadow
  • Registratie: Juli 2000
  • Laatst online: 19-05 21:37
whoami schreef op 04 mei 2004 @ 13:56:
Je wilt de tijd eruit halen? Kan je dan niets doen met DATEPART oid ?
Omdat ik toch bezig ben wil ik dit ook wel proberen, is misschien handiger...

anyways, dit werkt:
code:
1
SELECT datepart(d,fictievedatum) as datum


maar dan heb ik alleen nog maar de dag, want dit werkt niet:
code:
1
SELECT datepart(d-m-yy, fictievedatum) as datum

  • cameodski
  • Registratie: Augustus 2002
  • Laatst online: 06-11-2023
DarkShadow schreef op 04 mei 2004 @ 15:07:
[...]


Omdat ik toch bezig ben wil ik dit ook wel proberen, is misschien handiger...

anyways, dit werkt:
code:
1
SELECT datepart(d,fictievedatum) as datum


maar dan heb ik alleen nog maar de dag, want dit werkt niet:
code:
1
SELECT datepart(d-m-yy, fictievedatum) as datum
Via de datepart functie is wel mogelijk, maar wordt nog lastiger, omdat je perse een datetime moet hebben. Om dat voor elkaar te krijgen, moet je eerst de datepart van jaar, maand, dag eruit halen. Dat zijn dan integers, dus om ze aan elkaar te plakken moet je ze ook nog converten naar chars. Vervolgens kun je ze dan aan elkaar plakken en uiteindelijk kun je het hele zwikkie converten naar een datetime.

Overigens wil ik je nog wel aanraden om in je convert 112 te gebruiken ipv 102 of 103, omdat je dan een taal onafhankelijk datum formaat krijgt en daarom in alle talen werkt.
Je query wordt dan als volgt:
code:
1
convert(datetime, convert(varchar,fictievedatum,112)) as datum

Enne, bij het converten naar datetime heeft je style geen invloed, dus die kun je gewoon weglaten.

[ Voor 10% gewijzigd door cameodski op 04-05-2004 15:16 ]

Never underestimate the power of


  • DarkShadow
  • Registratie: Juli 2000
  • Laatst online: 19-05 21:37
mkay tnx :)
Pagina: 1