Avatar billede cermitto Nybegynder
17. april 2006 - 11:48 Der er 53 kommentarer

set conn. med dato

Er det muligt at lave en set.conn ud fra dette dato format 16-04-2006 13:43

select. Feks. sige hvis dags dato er 1 mdr. ældre
Avatar billede cyberkox Nybegynder
17. april 2006 - 12:37 #1
Ja, så ska du vel bar igang med forskellige IF sætninger :)
Avatar billede cyberkox Nybegynder
17. april 2006 - 12:40 #2
Er det connection-strengen der skal varriere eller er det SQL sætningen (fx SELECT) du tænker på?

I såfald kan du jo sige:

select * from tabel where dato = date()
Avatar billede cermitto Nybegynder
17. april 2006 - 14:58 #3
ja men datoen skal trækkes fra 16-02-2006 13:43 således at kun dem der har været bruger i mere end 1 mdr. får en email
Avatar billede cyberkox Nybegynder
17. april 2006 - 15:12 #4
Jo, så kunne den hedde:

SQL = "select * from bruger where oprettelsesdato <"& DateAdd("d", -30, now())
Avatar billede Slettet bruger
17. april 2006 - 15:21 #5
hejsa...

øh... 30 dage er altså ikke nødvendigvist en måned... Den mest korrekte metode er vel datediff...:

Sådan har:

SQL = "select * from bruger where datediff("m",cdate(oprettelsesdato),now())>0"

\Dan
Avatar billede cyberkox Nybegynder
17. april 2006 - 15:53 #6
Åh ja, self. Tænkte mig ikke lige om :D.. Dannielsens eksempel er lidt mere præcist end mit ;)
Avatar billede cermitto Nybegynder
17. april 2006 - 18:27 #7
Den her laver syntax error.

Set rs = Conn.Execute("SELECT * FROM bruger WHERE dato <"& DateAdd("d", -30, now()) AND mail = '1'")
Avatar billede cermitto Nybegynder
17. april 2006 - 19:24 #8
Ingen der har en ide?
Avatar billede cyberkox Nybegynder
17. april 2006 - 20:33 #9
Sådan:

Set rs = Conn.Execute("SELECT * FROM bruger WHERE dato <"& DateAdd("d", -30, now())&" AND mail = '1'")
Avatar billede cyberkox Nybegynder
17. april 2006 - 21:26 #10
Eller, dannielsen:

Hvis du bruger datediff, så viser den jo pr. månedskift. Dvs. at hvis brugeren er oprettet pr. 31.03.2006, og datoen for udsendelses af email er 1.4.2006, ja så tæller den som en hel måned.

Man kan lave det mere præcist med DateAdd og så bar trække en hel måned fra:
Så din SQL streng ska se sådan ud:

Set rs = Conn.Execute("SELECT * FROM bruger WHERE dato < "& DateAdd("m", -1, now())&" AND mail = '1'")
Avatar billede eagleeye Praktikant
18. april 2006 - 11:08 #11
Hvilken database bruger du?
Avatar billede cermitto Nybegynder
18. april 2006 - 11:25 #12
Jeg bruger MySql og formatet er varchar
Avatar billede cyberkox Nybegynder
18. april 2006 - 11:25 #13
Virker min streng ikke ?
Avatar billede eagleeye Praktikant
18. april 2006 - 11:33 #14
Hvordan er dato formatet?

Det bedste ville være at lave typen på kolonnen som Timestamp eller Date/Time, så kan man bruge dato funktionerne direkte. MySQL bruger dato formatet yyyy-mm-dd.
Avatar billede cermitto Nybegynder
18. april 2006 - 11:34 #15
jeg får stadig en fejl.

[MySQL][ODBC 3.51 Driver][mysqld-4.0.17-nt]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 '11:32:31 AND mail = '1'' at line 1

Som sagt er datoformatet i varchar og er skrevet som 16-04-2006 13:43
Avatar billede cyberkox Nybegynder
18. april 2006 - 11:35 #16
Lav felter om til date og brug så denne:

Set rs = Conn.Execute("SELECT * FROM bruger WHERE dato < "& DateAdd("m", -1, date())&" AND mail = '1'")
Avatar billede cermitto Nybegynder
18. april 2006 - 11:43 #17
Jamen jeg kan ikke lave feltet om, det vælter mit layout, det vil kræve en masse ændringer, er det helt umuligt at trække det ud af feltet når det står som varchar?
Avatar billede eagleeye Praktikant
18. april 2006 - 11:47 #18
Nej men det er mere besværligt du kan prøve sådan her så:

sql = "select * from brugere where STR_TO_DATE(dato, GET_FORMAT(DATE,'USA')) < DATE_ADD(NOW(), INTERVAL -1 MONTH)"


Alternativ kan man man lave formatet om ved at bruger streng funktioner men det kræver at dato med enkelt tal har nul forn: 04-02-2006
Avatar billede eagleeye Praktikant
18. april 2006 - 11:53 #19
eks med streng funktionerne:

sql = "select * from bruger where DATE(CONCAT(MID(dato,7,4),'-',MID(dato,4,2),'-',MID(dato,1,2))) < DATE_ADD(CURDATE(), INTERVAL -1 MONTH)"
Avatar billede cermitto Nybegynder
18. april 2006 - 12:14 #20
Hm. nej det driller noget :(

[MySQL][ODBC 3.51 Driver][mysqld-4.0.17-nt]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 '(dato, GET_FORMAT(DATE,'USA')) < DATE_ADD(NOW(), INTERVA
Avatar billede eagleeye Praktikant
18. april 2006 - 12:22 #21
ok.. hvad med den sidste?
Avatar billede cermitto Nybegynder
18. april 2006 - 12:28 #22
Den sidste laver denne fejl.

[MySQL][ODBC 3.51 Driver][mysqld-4.0.17-nt]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 '(CONCAT(MID(dato,7,4),'-',MID(dato,4,2),'-',MID(dato,1,2))) < D
Avatar billede cyberkox Nybegynder
18. april 2006 - 12:44 #23
Hvad med at sætte cdate om dato feltet fra databasen? Kan man ikke gøre det?

Set rs = Conn.Execute("SELECT * FROM bruger WHERE cdate(dato) < "& DateAdd("m", -1, date())&" AND mail = '1'")
Avatar billede eagleeye Praktikant
18. april 2006 - 12:45 #24
hvad hedder kolonnen?
Avatar billede cyberkox Nybegynder
18. april 2006 - 12:47 #25
Ja, hvis den ikke hedder dato, så skal den jo lave fejl :D
Avatar billede cermitto Nybegynder
18. april 2006 - 12:55 #26
kolonnen hedder: oprettet
Avatar billede eagleeye Praktikant
18. april 2006 - 13:00 #27
Ok, så skal dato rettes til oprettet:

sql = "select * from bruger where DATE(CONCAT(MID(oprettet,7,4),'-',MID(oprettet,4,2),'-',MID(oprettet,1,2))) < DATE_ADD(CURDATE(), INTERVAL -1 MONTH)"
Avatar billede cyberkox Nybegynder
18. april 2006 - 13:06 #28
Det virker vel også så ?

Set rs = Conn.Execute("SELECT * FROM bruger WHERE cdate(oprettet) < "& DateAdd("m", -1, date())&" AND mail = '1'")
Avatar billede cermitto Nybegynder
18. april 2006 - 13:53 #29
Ingen af delene virker :(

[MySQL][ODBC 3.51 Driver][mysqld-4.0.17-nt]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 '(CONCAT(MID(oprettet,7,4),'-',MID(oprettet,4,2),'-',MID(s
Avatar billede cyberkox Nybegynder
18. april 2006 - 14:01 #30
Hedder tabellen BRUGER ?
Avatar billede cermitto Nybegynder
18. april 2006 - 14:02 #31
ja det gør den
Avatar billede cermitto Nybegynder
18. april 2006 - 14:03 #32
kan man udskrive en sql for at se hvad der sker?
Avatar billede cyberkox Nybegynder
18. april 2006 - 14:06 #33
Jo, prøv det:

SQL = "SELECT * FROM bruger WHERE cdate(oprettet) < "& DateAdd("m", -1, date())&" AND mail = '1'"

response.write sql

'ser rs = conn.execute(sql)
Avatar billede cermitto Nybegynder
18. april 2006 - 14:17 #34
Okay. se:

SELECT * FROM bruger WHERE cdate(oprettet) < 18-03-2006 AND mail = '1'

men tidsformatet står jo også med timer og minutter. 16-04-2006 13:43
Er det ikke der fejlen opstår?
Avatar billede cyberkox Nybegynder
18. april 2006 - 14:25 #35
Ahh, tjae, prøv med now() i stedet for date() så:

SQL = "SELECT * FROM bruger WHERE cdate(oprettet) < "& DateAdd("m", -1, now())&" AND mail = '1'"
Avatar billede cermitto Nybegynder
18. april 2006 - 14:34 #36
Så ser sql'en sådan ud, men når man bruger now() er tids formatet jo også med sekunder, det giver vel fejl?

SELECT * FROM bruger WHERE cdate(oprettet) < 18-03-2006 14:33:07 AND mail = '1'
Avatar billede cyberkox Nybegynder
18. april 2006 - 14:40 #37
Hmm, jae, prøv :)

Er det helt umuligt at ændre tabellens struktur, for det ville klart være det nemmeste (i det her problem, self ;)
Avatar billede cermitto Nybegynder
18. april 2006 - 14:46 #38
ved ikke, men er det måske muligt at bruge det her til noget ellers?

Function doMysqlDateTime ()
dtDateTime = Now()
dtDateTime = Right("0" & DatePart("D", dtDateTime),2) & "-" & Right("0" & DatePart("M", dtDateTime),2) & "-" & DatePart("YYYY", dtDateTime) & " " & right("0" & DatePart("H", dtDateTime),2) & ":" & right("0" & DatePart("N", dtDateTime),2)
doMysqlDateTime = dtDateTime
End Function

Er ikke så god til ASP, men mener det laver noget tidsformat
Avatar billede cermitto Nybegynder
18. april 2006 - 15:28 #39
Okay, ærgeligt at det ikke kan lade sig gøre.
Avatar billede cyberkox Nybegynder
18. april 2006 - 15:58 #40
Hmm, nej det kan jeg ikke helt se. Men altså, nu kender jeg self ikk din side og din brug af oprettesdato etc, men ved at formatere kolonnen til datetime kan du meget bedre bruge og arbejde med det som en "dato" :)
Avatar billede cermitto Nybegynder
18. april 2006 - 16:02 #41
Okay, nu har jeg formateret til datetime
Avatar billede cyberkox Nybegynder
18. april 2006 - 16:06 #42
Okay, se så sku denne her meget gerne virke:

SQL = "SELECT * FROM bruger WHERE oprettet < "& DateAdd("m", -1, now())&" AND mail = '1'"
Avatar billede cermitto Nybegynder
18. april 2006 - 16:28 #43
Desværre, fejler stadig.

[MySQL][ODBC 3.51 Driver][mysqld-4.0.17-nt]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 '16:27:45 AND mail = '1'' at line 1
Avatar billede cyberkox Nybegynder
18. april 2006 - 16:40 #44
Prøv:

SQL = "SELECT * FROM bruger WHERE (oprettet < "& DateAdd("m", -1, now())&" AND mail = 1)"
Avatar billede cermitto Nybegynder
18. april 2006 - 17:06 #45
Nøjagtig det samme, men ser sql'en da ikke rigtig ud?

SELECT * FROM bruger WHERE (oprettet < 18-03-2006 17:05:27 AND mail = 1)
Avatar billede cyberkox Nybegynder
18. april 2006 - 17:10 #46
Prøv lige at sige:

SQL = "SELECT * FROM bruger WHERE oprettet < "& DateAdd("m", -1, now())
Avatar billede cermitto Nybegynder
18. april 2006 - 17:20 #47
Så skriver sql'en

SELECT * FROM bruger WHERE oprettet < 18-03-2006 17:19:19
Avatar billede cyberkox Nybegynder
18. april 2006 - 17:55 #48
Ja, men prøv at execute den? Hva siger den så?
Avatar billede cermitto Nybegynder
18. april 2006 - 18:37 #49
Fejler ved execute:

[MySQL][ODBC 3.51 Driver][mysqld-4.0.17-nt]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 '18:37:15' at line 1
Avatar billede cyberkox Nybegynder
18. april 2006 - 22:52 #50
Hmm, det ser ud til at det er klokkeslættet den ikk vil arbejde med, prøv uden vha. date():

SQL = "SELECT * FROM bruger WHERE (oprettet < "& DateAdd("m", -1, date())&" AND mail = 1)"
Avatar billede cermitto Nybegynder
19. april 2006 - 09:35 #51
Det sidste forslag giver ingen fejl, men finder heller ikke nogen poster. jeg har prøvet at sætte tabellen til date og datetime, gør ingen forskel :(
Avatar billede cermitto Nybegynder
19. april 2006 - 09:54 #52
Jeg ved snart ikke hvad jeg skal gøre. tjek lige det her, burde det virke? jeg har prøvet formatet varchat, date, datetime synes ikke der er nogen forskel overhoved.

Function doMysqlDateTime ()
dtDateTime = Now()
dtDateTime = DatePart("YYYY", dtDateTime) & "-" & DatePart("M", dtDateTime) & "-" & DatePart("D", dtDateTime) & " " & DatePart("H", dtDateTime) & ":" & DatePart("N", dtDateTime) & ":" & DatePart("S", dtDateTime)

doMysqlDateTime = dtDateTime
End Function

Set rs = Conn.Execute("Select FROM bruger where oprettet <= DATE_SUB('" & doMysqlDateTime() & "', INTERVAL 500 HOUR)  AND mail = '1' ")
Avatar billede cermitto Nybegynder
29. april 2006 - 10:02 #53
Ingen forslag så lukker jeg spg.
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
Kurser inden for grundlæggende programmering

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