Blog Home  Home Feed your aggregator (RSS 2.0)  
HP's Blog - Sprachen
Hans-Peter Schelian's Weblog
 
# Thursday, November 29, 2007

Da mein Hauptgeschäft nicht in der Erstellung von SQL Abfragen liegt, kommt es immer wieder vor, dass ich nach ein und der gleichen Lösung für ein Problem immer wieder mal recherchieren muss, da ich mir die Lösungen nicht (bzw. nicht immer) merken kann.

Dieser Beitrag fällt unter diese Kategorie (Und nachdem ich es nun aufgeschrieben habe, werde ich es wohl nie mehr vergessen smile_shades, na dann hätte es ja was genutzt dies hier aufzuschreiben.).

Nun aber zum eigentlichen Problem bzw. zur Lösung:

Ich weiß nicht wie oft ich schon mal schnell eine SQL Abfrage machen musste, die alle Daten anzeigt, oder löscht oder was auch sonst immer, welches entweder vor, nach oder in einem bestimmten Jahr einen Eintrag in einem datetime Feld enthält

Bei eigenen Tabellen Entwürfen häufig das Feld "Created", oder "LastChange" - ein Datenbank Feld mit dem Datentyp datetime.

Nun ist die Abfrage "Select * from  <table> where <datetimeField>  < 2007" thumbs_down wie in der Überschrift verwendet syntaktisch nicht falsch, also es wird kein SQL Fehler erzeugt, aber es wird auch nicht das gewünschte Ergebnis angezeigt.

So wie die Abfrage aufgebaut ist, wird das Ergebnis leer sein, da keiner der datetime Werte kleiner sein dürfte als der Wert 2007.

Die korrekte Abfrage (besser gesagt, eine korrekte Möglichkeit) dafür sieht wie folgt aus:

Select * from  <table> where DatePart(year,<datetimeField>)  <= 2007 thumbs_up

Hier wird nun nur nach dem Jahr innerhalb des datetime Ausdrucks verglichen und der Vergleich mit 2007 ist dann richtig.

Mehr über DatePart auf MS TechNet

SQL Profis mögen mir verzeihen wenn ich bei den verwendeten Begriffen nicht immer ganz getroffen habe, aber wie gesagt, SQL Abfragen ist nicht unbedingt mein Spezialgebiet.

SQL Server | Sprachen | SQL
Thursday, November 29, 2007 5:33:56 PM (W. Europe Standard Time, UTC+01:00)  #    Comments [0]  
Autor: Hans-Peter Schelian  |  Trackback
# Tuesday, August 21, 2007

Immer wieder geschieht es dass ich während der Programmierung über den zu verwendenden Zugriffsmodifizierer für Klassen und Methoden nachdenken muss (manchmal länger als ich eigentlich möchte ). Aus diesem Grund mach ich mir hier wieder mal eine kleine Gedächtnisstütze in Form dieses Blog Eintrags.

Hier nun eine kleine Tabelle in welcher man einfach den benötigten Zugriffsmodifizierer ablesen kann:

Zugriffsmodifizierer Zugriff von beliebiger Stelle Zugriff aus Assembly

Zugriff aus abgeleiteterKlasse in eigener Assembly

Zugriff aus abgeleiteter Klasse in anderer Assembly Zugriff aus eigener Klasse
public Ja Ja Ja Ja Ja
protected internal - Ja Ja Ja Ja
internal - Ja Ja - Ja
protected - - Ja Ja Ja
private - - - - Ja

Programmierung | Tips und Tricks | Sprachen | C#
Tuesday, August 21, 2007 10:18:49 AM (W. Europe Daylight Time, UTC+02:00)  #    Comments [0]  
Autor: Hans-Peter Schelian  |  Trackback
# Monday, January 10, 2005

Das Transaktionsprotokoll wird größer und größer, die Festplatte droht zu platzen, was kann man tun ?.

Wenn trotz Datensicherung das Transaktionsprotokoll nicht abgeschnitten und verkleinert wird. (Voraussetzung dafür ist allerdings, dass auch in den Einstellungen automatisch verkleinern aktiviert ist), kann man mit dem nachfolgenden SQL Script das Transaktionsprotokoll der SQL 2000 Datenbank manuell verkleinern.

BACKUP LOG pubs WITH TRUNCATE_ONLY
GO
DBCC SHRINKFILE(pubs_log, 10)
GO

Im Beispiel wurde die Datenbank pubs verwendet, ersetzen Sie einfach pubs gegen Ihre Datenbank und führen diese Befehle im SQL Query Analyzer aus.

Sprachen | SQL | Server | SQL Server
Monday, January 10, 2005 6:16:03 PM (W. Europe Standard Time, UTC+01:00)  #    Comments [0]  
Autor: Hans-Peter Schelian  |  Trackback
Copyright © 2010 Hans-Peter Schelian - Schelian IT Beratung. All rights reserved.