Avatar billede ixus Nybegynder
18. november 2005 - 14:27 Der er 14 kommentarer og
2 løsninger

C5 SQL PR/UL i datofelter ved indsættelse eksternt

Af en eller anden grund skriver C5 SQL PR og UL i datofelterne, det sker tilsyneladende når jeg skyder ind i C5 SQL via SQL. Nogen der ved hvorfor, og hvordan kan jeg lige fixe det? F.eks.

2002-12-02 17:17:58.000 resulterer i at C5 skriver PR/12/02.
Avatar billede Broholm Novice
18. november 2005 - 14:31 #1
Du SKAL altid smide datoer ind som klokken 00:00:00

Kernen bruger tiden til at angive PR og UL.
C5        -> SQL
31/12/2005 -> 31/12/2005 00:00:00
UL/12/2005 -> 31/12/2005 00:00:02
PR/01/2006 -> 31/12/2005 00:00:58
01/01/2006 -> 01/01/2006 00:00:00

-Broholm
Avatar billede ixus Nybegynder
18. november 2005 - 14:36 #2
Nå, så var det da vidst godt jeg lige fik spurgt om det heh. Har du en SQL funktion ved hånden som jeg kan bruge, eller hurtigt tip til hvordan jeg lige få fjernet tiden fra dato feltet, når jeg indsætter direkte via SQL?
Avatar billede ixus Nybegynder
18. november 2005 - 14:47 #3
Jeg har ikke lige fået testet den endnu, men fl.g. virke?

if @value is null or @value = ''
    return '1900-01-01 00:00:00'
else
    return convert(varchar(10), @value, 121) + ' 00:00:00'

return @value
Avatar billede Broholm Novice
18. november 2005 - 14:52 #4
SELECT CONVERT(datetime,CAST(GETDATE() AS int))

Håber at du kan bruge den...

-Broholm
Avatar billede ixus Nybegynder
18. november 2005 - 14:54 #5
Hah, det var jo lidt mere simpelt, mange tak for hjælpen!
Avatar billede Broholm Novice
18. november 2005 - 14:55 #6
SELECT CONVERT(datetime,CAST(CAST('2005-05-09 00:53:54' AS datetime) AS int))
Avatar billede ixus Nybegynder
18. november 2005 - 14:58 #7
Bruger jeg den på getdate(), får jeg 2005-11-19 00:00:00.000, altså lige en dag for meget.
Avatar billede Broholm Novice
18. november 2005 - 15:02 #8
Nåhr ja, vi har kun den 18. i dag

Så træk een fra:
SELECT CONVERT(datetime,CONVERT(bigint,GETDATE())-1)
Avatar billede Broholm Novice
18. november 2005 - 15:02 #9
SELECT CONVERT(datetime,CAST(GETDATE() AS int)-1)
Avatar billede Broholm Novice
18. november 2005 - 15:04 #10
Æv.. Den runder op og ned... hmmmm
Avatar billede Broholm Novice
18. november 2005 - 15:06 #11
Sådan...

SELECT CONVERT(datetime,CONVERT(bigint,DATEADD(hh,-12,CONVERT(datetime,'2005-05-09 23:34:45'))))
SELECT CONVERT(datetime,CONVERT(bigint,DATEADD(hh,-12,CONVERT(datetime,'2005-05-09 03:34:45'))))
SELECT CONVERT(datetime,CONVERT(bigint,DATEADD(hh,-12,GETDATE())))
Avatar billede ixus Nybegynder
18. november 2005 - 15:08 #12
*Fnis* - jeg synes at select convert(varchar(10), getdate(), 121) + ' 00:00:00.000' nu virker fint?
Avatar billede Broholm Novice
18. november 2005 - 15:11 #13
Dit giver en tekst...

CONVERT(bigint,DATEADD(hh,-12,GETDATE()))) <-- Mit er kortere :D
convert(varchar(10), getdate(), 121) + ' 00:00:00.000'
Avatar billede ixus Nybegynder
18. november 2005 - 15:18 #14
I øvrigt, det kan godt være den returnere en varchar, men konverteringen til datetime er jo implicit, så den vil vel virke?

Min vinder nu en smule på elegance synes jeg. Og elegance > korthed.
Avatar billede Broholm Novice
18. november 2005 - 15:18 #15
Her er vinderen vist. Så skal man ikke konvertere igennem typerne:

SELECT DATEADD(dd, DATEDIFF(dd,0,getdate()), 0)
Avatar billede ixus Nybegynder
18. november 2005 - 15:21 #16
Ja, den er meget finere :o), også på elegance og pænhed. Det er jo også vigtigt.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester