17. september 2005 - 10:59
Der er
7 kommentarer og 1 løsning
Problemer med dato
Hej alle Den siger: Invalid operator for data type. Operator equals subtract, type equals varchar. strSQL = "SET DATEFORMAT YMD INSERT INTO " & strMemberTablePrefix & "IPLIST (IPLIST_MEMBERID, IPLIST_STARTIP, IPLIST_STARTDATE, IPLIST_ENDDATE, IPLIST_STATUS) VALUES ('" & RS("M_NAME") & "', '" & RS("M_LAST_IP") & "', ' + replace(getDate(), '-', '') + 000000', ' + replace(getDate() + 365, '-', '') + 000000', 0)" DEt virker, undtagen det at gemme datoen, som skal formatetes i: År, måned dato, hvor -tegnet fjernes og så skal der indsætte 6 nuller, så outputtet bliver (f.eks. for i dag): 20050917000000 Kan du hjælpe?
Annonceindlæg fra Computerworld it-jobbank
17. september 2005 - 13:12
#1
Nå, jeg løste det med noget halv grimt vb-kodning i stedet: strSQL = "INSERT INTO " & strMemberTablePrefix & "IPLIST (IPLIST_MEMBERID, IPLIST_STARTIP, IPLIST_STARTDATE, IPLIST_ENDDATE, IPLIST_STATUS) VALUES ('" & RS("M_NAME") & "', '" & RS("M_LAST_IP") & "', '" & Year(Date()) & Right("00" & month(date()), 2) & Right("00" & day(date()), 2) & "000000', '" & (Year(Date()) + 1) & Right("00" & month(date()), 2) & Right("00" & day(date()), 2) & "000000', 0)" Men er der nogle, som kan lave det dato-mæssige om til en ren sql-løsning, så hører jeg gerne fra jer ;)
19. september 2005 - 11:07
#2
Skal det ikke bare være "dags dato"? Så hvorfor ikke bare: strSQL = "INSERT INTO " & strMemberTablePrefix & "IPLIST (IPLIST_MEMBERID, IPLIST_STARTIP, IPLIST_STARTDATE, IPLIST_ENDDATE, IPLIST_STATUS) VALUES ('" & RS("M_NAME") & "', '" & RS("M_LAST_IP") & "', GETDATE(), DATEADD(y, 1, GETDATE()), 0)" Du gør en del ud af at klokkeslættet skal være midnat. Det kan også laves i SQL, men jeg har meget svære ved at se hvorfor??
19. september 2005 - 11:12
#3
Anyway, erstat GETDATE() med dette: CONVERT(smalldatetime, CONVERT(CHAR(8), GETDATE(), 112), 112) Så er klokkeslættet 00:00:00
19. september 2005 - 11:41
#4
Midnat er lige meget, det var blot fordi jeg ikke også gad at rode med tiden :-) Jeg prøver lige dit eksempel og vender tilbage.
19. september 2005 - 20:50
#5
Har testet det nu, men jeg skal altså :-) bruge datoen formateret på følgende måde: 20050917 Så jeg kan ikke bruge getDate(), desværre.
19. september 2005 - 22:54
#6
Øh, er det ikke datofelter (datetimer eller smalldatetime)? Så gør sådan: strSQL = "INSERT INTO " & strMemberTablePrefix & "IPLIST (IPLIST_MEMBERID, IPLIST_STARTIP, IPLIST_STARTDATE, IPLIST_ENDDATE, IPLIST_STATUS) VALUES ('" & RS("M_NAME") & "', '" & RS("M_LAST_IP") & "', CONVERT(CHAR(8), GETDATE(), 112), CONVERT(CHAR(8), DATEADD(y, 1, GETDATE()), 112), 0)" Det konverterer til chr, men hvis datoen er int vil det virke alligevel. Og så må jeg da råde dig til at bruge datetime, der er mange fordele ved det.
19. september 2005 - 22:55
#7
Fletet er ikke et datofelt, men et varchar-felt (det er ikke mig som har lavet systemet ;))
01. oktober 2005 - 19:55
#8
Nå, lukker og slukker. Jeg løste det ved brug af vb-kode i stedet for indbyggede sql-funktioner.
Computerworld tilbyder specialiserede kurser i database-management