AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein MSSQL Stored Procedure -> datetime vergleichsprobleme???

MSSQL Stored Procedure -> datetime vergleichsprobleme???

Offene Frage von "cherry"
Ein Thema von cherry · begonnen am 7. Mai 2008 · letzter Beitrag vom 12. Mai 2008
Antwort Antwort
Seite 3 von 4     123 4   
NormanNG

Registriert seit: 1. Feb 2006
294 Beiträge
 
Delphi 2007 Professional
 
#21

Re: MSSQL Stored Procedure -> datetime vergleichsprobleme

  Alt 8. Mai 2008, 08:20
Zitat:
2008-07-05 14:16:32.000 ¦ 2008-07-05 16:16:32.000 ¦ 2008-05-07 15:16:32.000
2008-07-05 14:16:32.000 ¦ 2008-07-05 16:16:32.000 ¦ 2008-05-07 15:16:32.000
2008-07-05 14:16:32.000 ¦ 2008-07-05 16:16:32.000 ¦ 2008-05-07 15:16:32.000
2008-07-05 14:16:32.000 ¦ 2008-07-05 16:16:32.000 ¦ 2008-05-07 15:16:32.000
In deinem @date_time sind Monat und Tag vertauscht!


SQL-Code:
declare @Date_Time datetime
set @Date_Time = '2008-05-07 15:16:32'

select *
from [t_bb_folder_info]
where [t_bb_folder_info].[date_time] between DateAdd(second, -1, @Date_Time) and DateAdd(second, 1, @DateTime)
getippt und nicht getestet
Gruß
Norman
  Mit Zitat antworten Zitat
Benutzerbild von cherry
cherry

Registriert seit: 14. Nov 2005
561 Beiträge
 
RAD-Studio 2009 Ent
 
#22

Re: MSSQL Stored Procedure -> datetime vergleichsprobleme

  Alt 8. Mai 2008, 08:28
Also jetzt seh ichs auch aber Hallo, da stimmt doch definitiv etwas nicht?! *hirnschleiff*

SQL-Code:
declare
  @date_time datetime
SET @date_time = CAST('2008-07-05 15:16:32.000AS datetime);
SELECT * FROM [t_bb_folder_info]
where [t_bb_folder_info].[date_time] Between DateAdd(second,-1,@date_time) and DateAdd(second,1,@date_time)
erzeugt folgende ausgabe

SQL-Code:
172743 ¦ C:\Dokumente und Einstellungen\th21498\ ¦ 8789271 ¦ 2008-05-07 15:16:32.000 ¦ 12
172744 ¦ C:\Dokumente und Einstellungen\th21498\borland ¦ 5117 ¦ 2008-05-07 15:16:32.000 ¦ 12
172745 ¦ C:\Dokumente und Einstellungen\th21498\.revj0079 ¦ 4542 ¦ 2008-05-07 15:16:32.000 ¦ 12
172746 ¦ C:\Dokumente und Einstellungen\th21498\.SunDown... ¦ 97451 ¦ 2008-05-07 15:16:32.000 ¦ 12
.
.
.
also oben beim Select gebe ich dieses datetime mit: '2008-07-05 15:16:32.000' dann findet es dieses datetime '2008-05-07 15:16:32.000'

spinn ich jetzt???????????????????????
Ist das nur mein Gefühl, oder ist die ganze Welt verrückt geworden!?
  Mit Zitat antworten Zitat
NormanNG

Registriert seit: 1. Feb 2006
294 Beiträge
 
Delphi 2007 Professional
 
#23

Re: MSSQL Stored Procedure -> datetime vergleichsprobleme

  Alt 8. Mai 2008, 08:33
Hi,

das liegt dann an deinem eingestellen Datumformat des SQl-Servers.
Nimm mal das

SQL-Code:
set dateformat ymd

declare @Date_Time datetime
set @Date_Time = '2008-05-07 15:16:32'

select *
from [t_bb_folder_info]
where [t_bb_folder_info].[date_time] between DateAdd(second, -1, @Date_Time) and DateAdd(second, 1, @DateTime)
[edit]
unabhängig vom eingstellten Datumformat ist folgendes

set @Date_Time = '20080507 15:16:32.000'
[/edit]
Gruß
Norman
  Mit Zitat antworten Zitat
Benutzerbild von cherry
cherry

Registriert seit: 14. Nov 2005
561 Beiträge
 
RAD-Studio 2009 Ent
 
#24

Re: MSSQL Stored Procedure -> datetime vergleichsprobleme

  Alt 8. Mai 2008, 08:39
hmmm... set dateformat ymd es ist ein produktiver MSSQL Server auf dem sehr wichtige "Programme" laufen ich schätze das kann ich mir nicht erlauben sonst werd ich noch gesteinigt

kann ich das Problem nicht anders lösen?
Ist das nur mein Gefühl, oder ist die ganze Welt verrückt geworden!?
  Mit Zitat antworten Zitat
Benutzerbild von cherry
cherry

Registriert seit: 14. Nov 2005
561 Beiträge
 
RAD-Studio 2009 Ent
 
#25

Re: MSSQL Stored Procedure -> datetime vergleichsprobleme

  Alt 8. Mai 2008, 08:48
Zitat von NormanNG:
unabhängig vom eingstellten Datumformat ist folgendes
set @Date_Time = '20080507 15:16:32.000'
so würde ich ja "set dateformat ymd" umgehen, aber der parameter @Date_Time soll ja dann am Ende von Delphi an die StoredProc übergeben werden, wie lös ich denn da das Problem... muss ich zuerst das Datum konvertieren? wenn ja wie?

und heisst das mein Programm würde dann nicht mehr so richtig funktionieren wenn der SQL -Server ein anderes Datumsformat hätte?
Ist das nur mein Gefühl, oder ist die ganze Welt verrückt geworden!?
  Mit Zitat antworten Zitat
NormanNG

Registriert seit: 1. Feb 2006
294 Beiträge
 
Delphi 2007 Professional
 
#26

Re: MSSQL Stored Procedure -> datetime vergleichsprobleme

  Alt 8. Mai 2008, 08:53
Hi,



Zitat:
so würde ich ja "set dateformat ymd" umgehen,
ja

Zitat:
aber der parameter @Date_Time soll ja dann am Ende von Delphi an die StoredProc übergeben werden, wie lös ich denn da das Problem... muss ich zuerst das Datum konvertieren?
Nein. Die Einstellung betrifft nur das Umwandeln von String in Datetime, also nur deinen Test im Query-Tool.
Vom Programm werden (hoffendlich) direkt Datetime-Werte geliefert.

Zitat:
und heisst das mein Programm würde dann nicht mehr so richtig funktionieren wenn der SQL -Server ein anderes Datumsformat hätte?
Wenn die Umwandlung String->Datetime benötigt und das o.g. unabhängige Format verwendet wird,
dann ist es eben unabhängig von den Server-Einstellungen.
Gruß
Norman
  Mit Zitat antworten Zitat
Benutzerbild von cherry
cherry

Registriert seit: 14. Nov 2005
561 Beiträge
 
RAD-Studio 2009 Ent
 
#27

Re: MSSQL Stored Procedure -> datetime vergleichsprobleme

  Alt 8. Mai 2008, 09:01
also bitte nochmals für all diejenigen, die einen IQ < 100 haben

Zitat von NormanNG:
Nein. Die Einstellung betrifft nur das Umwandeln von String in Datetime, also nur deinen Test im Query-Tool.
Vom Programm werden (hoffendlich) direkt Datetime-Werte geliefert.
Welche Einstellung?
als Parameter wird aber bereits ein datetime Wert geliefert wie du das ja hoffst, also wo passiert dann das Umwandeln von String in Datetime... am schluss habe ich ja nirgens mehr ein String Wert.. eine solche Umwandlung wird es nie geben...

Ist das nur mein Gefühl, oder ist die ganze Welt verrückt geworden!?
  Mit Zitat antworten Zitat
NormanNG

Registriert seit: 1. Feb 2006
294 Beiträge
 
Delphi 2007 Professional
 
#28

Re: MSSQL Stored Procedure -> datetime vergleichsprobleme

  Alt 8. Mai 2008, 09:11
Zitat:
Nein. Die Einstellung betrifft nur das Umwandeln von String in Datetime, also nur deinen Test im Query-Tool.
Vom Programm werden (hoffendlich) direkt Datetime-Werte geliefert.
also genauer, hier

SQL-Code:
declare @Date_Time datetime
set @Date_Time = '20080507 15:16:32.000
select ...
Wenn dein Select dann das gewünschte Ergebnis liefert, baust du das
in eine Procedure und prüft diese nochmal per Aufruf aus dem Query-Tool
(hierbei wieder das Datumformat beachten). Geht das auch, dann weiter in Delphi...
Gruß
Norman
  Mit Zitat antworten Zitat
Benutzerbild von cherry
cherry

Registriert seit: 14. Nov 2005
561 Beiträge
 
RAD-Studio 2009 Ent
 
#29

Re: MSSQL Stored Procedure -> datetime vergleichsprobleme

  Alt 8. Mai 2008, 09:13
ok... ich meld mich dann wieder wenn ich soweit bin...
Ist das nur mein Gefühl, oder ist die ganze Welt verrückt geworden!?
  Mit Zitat antworten Zitat
Benutzerbild von cherry
cherry

Registriert seit: 14. Nov 2005
561 Beiträge
 
RAD-Studio 2009 Ent
 
#30

Re: MSSQL Stored Procedure -> datetime vergleichsprobleme

  Alt 8. Mai 2008, 09:25
ok also SELECT funktionierte... meine StoredProc scheint es auch zu tun... so sieht sie nun aus:

SQL-Code:
ALTER PROCEDURE [dbo].[p_bb_ignore_folder]
@username varchar(30),
@ignore_dir varchar(255),
@date_time datetime

AS
DECLARE
  @size bigint,
  @id_user int

SET @size = -1;
SET @id_user = (SELECT [t_bb_user].[id_user] FROM [t_bb_user] WHERE [t_bb_user].[username] = @username);
SET @size = ( SELECT SUM([t_bb_folder_info].[folder_size]) FROM [t_bb_folder_info]
  WHERE (
           [t_bb_folder_info].[id_user] = @id_user
           AND [t_bb_folder_info].[folder] LIKE @ignore_dir
           AND dbo.DateOnly([t_bb_folder_info].[date_time]) = dbo.DateOnly(@Date_Time)
           AND [t_bb_folder_info].[date_time] BETWEEN DateAdd(millisecond, -1, @Date_Time) and DateAdd(millisecond, 1, @Date_Time)
  )
);

UPDATE t_bb_logon
SET
  [t_bb_logon].[ignore_dir_size] = @size
WHERE (
         [t_bb_logon].[id_user] = @id_user
         AND dbo.DateOnly([t_bb_logon].[date_time]) = dbo.DateOnly(@Date_Time)
         AND [t_bb_logon].[date_time] BETWEEN DateAdd(millisecond, -1, @Date_Time) and DateAdd(millisecond, 1, @Date_Time)
);

RETURN @size
mit dem aufruf direkt vom Server funktioniert das so:

SQL-Code:
declare
  @result bigint
  
EXEC @result = p_bb_ignore_folder 'th21498', 'C:\Dokumente und Einstellungen\th21498\Lokale Einstellungen\%', '20080507 15:16:32.000'
print CAST(@result AS CHAR(255));
alles palleti...

wie befürchtet funktioniert der Aufruf aus meiner Delphi-Applikation leider nicht. Meine Vermutung -> eben das angesprochene ydm <-> ymd Problem...

meint Aufruf in Delphi:

Delphi-Quellcode:
procedure TSisterWatch.IgnoreDir(Date_Time: TDateTime);
var
  tmp_igp: String;
begin
  tmp_igp := GetIgnoreDir;
  if tmp_igp <> 'then
  begin
    with ADOStoredProc8 do
    begin
      Parameters.ParamValues['@username'] := Username;
      Parameters.ParamValues['@ignore_dir'] := tmp_igp;
      Parameters.ParamValues['@date_time'] := Date_Time;
      ExecProc;
    end;
  end;
end;
wie stelle ich das nun an...
Ist das nur mein Gefühl, oder ist die ganze Welt verrückt geworden!?
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz