23. august 2004 - 11:48
Der er
28 kommentarer og 1 løsning
Hjælp til sql med mssql!
Problemet er at datoen som jeg for fra databaser er timecode = 1065078000 så for jeg problemer når jeg bruger Between N.B.1065078000 = 23-08-2004 Hvis jeg prøver at bruge timecode får jeg bare en fejl $StartOfMonth = "01-08-2003"; $EndOfMonth = "31-08-2004"; //$StartOfMonth ="1091314800"; //$EndOfMonth = "1093906800"; $queryDate ="SELECT * FROM Tabel WHERE dato BETWEEN $StartOfMonth AND $EndOfMonth";
Annonceindlæg fra DE-CIX
Edge computing: behandling ved kilden
Edge computing revolutionerer den måde, data behandles på, ved at bringe kapacitet og ydeevne tættere på dér, hvor der er behov for det.
15. april 2025
23. august 2004 - 11:58
#1
Du bliver nødt til at konvertere den/de variabler der har et andet format, så du kan lave forespørgslen med et ensartet format (hvadenten det er unix eller date).
23. august 2004 - 11:59
#2
Jeg forstår bare ikke helt hvad format de enkelte variabler har i denne: $queryDate ="SELECT * FROM Tabel WHERE dato BETWEEN $StartOfMonth AND $EndOfMonth";
23. august 2004 - 12:19
#3
Vorden konvertere jeg den til variabler?
23. august 2004 - 12:25
#4
Jeg får: 1065078000 = 02-10-2003 og IKKE: 1065078000 = 23-08-2004 1093212000 = 23-08-2004 måske det er problemet?
23. august 2004 - 12:40
#5
Hvis jeg bruger timecode og ikke data "Datetime" for jeg den fejl. Warning: (null)(): Invoke() failed: Exception occurred. Source: Microsoft OLE DB Provider for ODBC Drivers Description: [Microsoft][ODBC SQL Server Driver][SQL Server]Arithmetic overflow error converting expression to data type datetime. in c:\temp\mssql.php on line 38 Fatal error: Call to a member function on a non-object in c:\temp\mssql.php on line 42
23. august 2004 - 12:42
#6
detter er min php kode <?php $StartOfMonth = "1065078000";// "01-08-2003"; $EndOfMonth = "1065078000"; //31-08-2004"; //$StartOfMonth ="1091314800"; //$EndOfMonth = "1093906800"; $queryDate ="SELECT * FROM Teble WHERE Dato BETWEEN $StartOfMonth AND $EndOfMonth"; $queryDate2 ="SELECT * FROM Teble"; $queryDate3 ="SELECT * FROM Teble WHERE Dato = 23-08-2004"; function dd($ddd) { $ddd = date("d-m-Y"); return $ddd; } $db = new COM("ADODB.Connection"); $dsn = "DRIVER={SQL Server}; SERVER={0.0.0.0};UID={xxx};PWD={xxx}; DATABASE={Data}"; $db->Open($dsn); $rs = $db->Execute($queryDate); while (!$rs->EOF) { $fv1 = $rs->Fields("Dato"); $fv1 =$fv1->value; echo $rs->Fields['Dato']->Value."<BR>"; echo dd($fv1)."<BR>"; $rs->MoveNext(); } ?>
23. august 2004 - 12:43
#7
Hvis du fx ønsker udtræk fra august 2004, kunne du prøve: $queryDate ="SELECT * FROM Tabel WHERE MONTH(dato)=8 AND YEAR(dato)=2004
23. august 2004 - 12:46
#8
Men dine tal passer jo heller ikke. Fx: $StartOfMonth = "1065078000";// "01-08-2003"; // FORKERT $StartOfMonth = "1065078000";// "02-10-2003"; // RIGTIGT
23. august 2004 - 12:50
#9
WHERE Dato = 23-08-2004"; // er osse forkert. Et DATATIME felt har formatet: 'DD-MM-YYYY'. Altså: WHERE Dato = '2004-08-23'
23. august 2004 - 12:51
#10
Et DATATIME felt har formatet: 'DD-MM-YYYY'. Sludder og vrøvl. Omvendt selvfølgelig: 'YYYY-MM-DD'.
23. august 2004 - 12:54
#11
den for jeg til at fungere:) WHERE MONTH(dato)=8 AND YEAR(dato)=2004 men ikke den WHERE Dato = '2004-08-23'
23. august 2004 - 13:09
#12
Får du en fejlmelding?
23. august 2004 - 13:16
#13
Hvilken felttype bruger du nu til 'dato' DATE eller DATETIME?
23. august 2004 - 13:16
#14
Nej, jeg for bare ingen data, på min side.
23. august 2004 - 13:18
#15
Jeg bruger datetime
23. august 2004 - 13:23
#16
Arh ok. Så prøv: WHERE TO_DAYS(Dato) = TO_DAYS('2004-08-23')
23. august 2004 - 13:50
#17
for den fejl Warning: (null)(): Invoke() failed: Exception occurred. Source: Microsoft OLE DB Provider for ODBC Drivers Description: [Microsoft][ODBC SQL Server Driver][SQL Server]'TO_DAYS' is not a recognized function name. in C:\Inetpub\mssql.php on line 58
23. august 2004 - 13:59
#18
Det var da pudsigt. Jeg skulle ellers mene TO_DAYS() har været med længe. Hvis du alligevel kun har brug for datoer kunne du så ikke ændre felttype til DATE? Så vil: WHERE Dato = '2004-08-23' sikkert virke.
23. august 2004 - 14:01
#19
Alternativt måske: WHERE LEFT(dato, 10) = '2004-08-23'
23. august 2004 - 14:04
#20
Det er faktisk et lille problem da jeg trekker data ud af Navision, så hvis jeg forandrer felt typen so kommer det til at give problemer i Navision.
23. august 2004 - 14:04
#21
Prøver lige den WHERE LEFT(dato, 10) = '2004-08-23' :)
23. august 2004 - 14:11
#22
Et andet alternativ kunne være: WHERE dato LIKE '2004-08-23%' // Husk procenttegnet
23. august 2004 - 14:13
#23
Hvis jeg bruger den så sær datoen ud som den Fx 'sep 27 2002' fx WHERE LEFT(dato, 12) = 'sep 27 2002'";
23. august 2004 - 14:20
#24
'sep 27 2002' er jo ikke et DATETIME format?
23. august 2004 - 14:22
#25
Arh, undskyld mig jeg troede vi snakkede MySQL og ikke MsSQL :o(
23. august 2004 - 14:23
#26
23. august 2004 - 14:24
#27
Hvis jeg sætter left til 20 tegn så kommer den ud med den 'sep 27 2002 12:00AM' fx WHERE LEFT(dato, 20) = 'sep 27 2002 12:00AM'";
23. august 2004 - 14:31
#28
Den fungerer find "SELECT * FROM table WHERE DAY(dato)=18 AND MONTH(dato)=8 AND YEAR(dato)=2004" så du for dine velfortjente points :) jeg kan jo bare lave en funktion til den, som jeg bruger i sql'en. Tussen tak for hjælpen :) Giv mej lige et svar:)
23. august 2004 - 14:51
#29
Ok så, hvis du fik løst problemet. Velbekommen :O)
Vi tilbyder markedets bedste kurser inden for webudvikling