webForumDet fria alternativet

Datum ifrån access till mysql

Databaser & SQLur Databashanterare & SQL

11 svar · 283 visningar · startad av Qimen

Medlem sedan juni 20015 009 inlägg
Frågan#1

Hej

Hur ska jag byta ut dessa så att dem funkar med mysql?

" and datediff('d',datumbetalt,date()) > 0 "

och

sql = "update anvandare set dagaraktiv = "& _
 	"iif (Datediff('d', cDate(bshyrabet), '"& date()&"') >=1, "& _
 	"dagaraktiv+1, iif(cDate(bshyrabet) Is Null, 1, "& _
 	"dagaraktiv)), bshyrabet = date() "&_
 	" where id = "& Trim(Session("id"))

Tror bara det är datumen som jag få problem med.

Medlem sedan dec. 200012 464 inlägg
#2
and to_days(datumbetalt) < to_days(current_date)
sql = _
"update anvandare " & _
" set dagaraktiv = "& _
" case when bshyrabet Is Null then 1 " & _
  "  when to_days(current_date) - to_days(bshyrabet) "  & _
 "  >=1 then dagaraktiv+1 end, " & _
" bshyrabet = current_date "& _
" where id = " & Session("id")
Medlem sedan juni 20015 009 inlägg
#3

Om man vill att det ska hända där det gått sex timmar sedan datumet. Kan man skriva så här:

"where shyra < SUBDATE(NOW(),INTERVAL 6 HOUR) "

?

Medlem sedan dec. 200012 464 inlägg
#4

Testa. Jo, det skall fungera.

Medlem sedan juni 20015 009 inlägg
#5

Jodå det funka, även min andra kod funka bra. Jag trodde jag skulle klara det sen då det såg ut att bara vara till att byta datumdelen. Men på denna koden vill det inte funka ändå:

sql = "update anvandare set energi = "&_
	"iif(energi + energitot >= 1000,1000,energi + energitot), " & _
	" nyenergi = date() where datediff('d',nyenergi,date()) > 0 "
connect.execute sql,,128

Jag försökta med:

sql = "update anvandare set energi = "&_
	"iif(energi + energitot >= 1000,1000,energi + energitot), " & _
	" nyenergi = date() where nyenergi < SUBDATE(date(),INTERVAL 6 HOUR) "
connect.execute sql,,128

Vill ändra så att det ändras vid 6 timmar. Felet jag får är:

[TCX][MyODBC]You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(energi + energitot >= 1000,1000,energi + energitot), nyenergi
/spel/check.asp, line 77

Kan man inte köra med iif satser i mysql eller?

Medlem sedan juni 20015 009 inlägg
#6

Hum tydligen funkade inte:

sql = "update anvandare set dagaraktiv = case when bshyrabet Is Null then 1 " & _
  " when to_days(current_date) - to_days(bshyrabet) "  & _
  " >=1 then dagaraktiv+1 end, " & _
  " bshyrabet = current_date "& _
  " where namn = '"&namn&"'"

När man loggar in en gång till, då datumet redan är aktuellt så blir dagaraktiv tomt istället. :q
Blir det svårt att ändra den så att den lägger till ett efter 6 timmar istället?

Medlem sedan dec. 200012 464 inlägg
#7
" when to_days(current_date) - to_days(bshyrabet) "  & _
  " >=1
" when current_date - bshyrabet > 6*60*60  "  & _

Nej, det går inte att använda iif i Mysql.

Medlem sedan juni 20015 009 inlägg
#8

LarsG skrev:

" when to_days(current_date) - to_days(bshyrabet) "  & _
  " >=1
" when current_date - bshyrabet > 6*60*60  "  & _

Men måste jag inte också ändra datumet så att det läggs till en tidpunkt och inte bara ett datum? Sen läggs fortfarande inget värde till när man loggar in.

Kan man lösa de frågorna med iif på något annat sätt?

Medlem sedan dec. 200012 464 inlägg
#9

Jag gav ett exempel tidigare med case i stället för iif.

Om du vill få både datum och tid, använd current_timestamp.

Medlem sedan juni 20015 009 inlägg
#10

Men varför försvinner värdet i databasen om datumet är aktuellt?

Medlem sedan dec. 200012 464 inlägg
#11

Ööh?

Lite mer detaljer, vilken kod är det som orsakar detta fenomen?

Medlem sedan juni 20015 009 inlägg
#12

Den koden som ska lägga till ett var 6:e timme. Om datumet är mer än 6 timmar gammalt så ändras den till aktuell som det ska, den lägger även till ett, men loggar man in en gång så blir posten i databasen tom.

sql = "update anvandare set dagaraktiv = case when bshyrabet Is Null then 1 " & _
  " when current_date - bshyrabet > 6*60*60  "  & _
  " >=1 then dagaraktiv+1 end, " & _
  " bshyrabet = current_date "& _
  " where namn = '"&namn&"'"
connect.execute sql,,128
138 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)