Seite 1 von 1
					
				timestamp
				Verfasst: 11.11.2010 20:39
				von ath
				Hallo,
wie schreibe und lese ich ein SQL-Datenbankfeld vom Typ timestamp. Eine Datentyp scheint es ja dafür in Purebasic nicht zu geben und der Schreibversuch mittels:
Code: Alles auswählen
statement.s = "UPDATE myTable set anldat = {ts '2010-11-11 00.00.00.000'} where key = " + chr(39) + myVar + chr(39)
DatabaseUpdate(1, statement)
funktioniert leider nicht. In der Managementkonsole (von SQL) funktioniert es.
Danke und Gruß
Andreas
 
			 
			
					
				Re: timestamp
				Verfasst: 12.11.2010 03:32
				von Bisonte
				vielleicht DatabaseQuery() nehmen ?
			 
			
					
				Re: timestamp
				Verfasst: 12.11.2010 07:39
				von ath
				Bisonte hat geschrieben:vielleicht DatabaseQuery() nehmen ?
Hi,
zum schreiben eines timestamp Feldes? Wohl kaum. Das lesen eines timestamp Feldes mittels DatabaseQuery macht aber auch Schwierigkeiten bzw. das Übertragen in eine Variable. Es ist kein Blob, Double, Float, Long oder Quad. GetDatabaseString liefert ein leeres Element.
Gruß
Andreas
 
			 
			
					
				Re: timestamp
				Verfasst: 12.11.2010 08:14
				von ts-soft
				Es wird wohl ein Long sein! Zum lesen und schreiben dann die Date() Lib von PB nutzen.
Gruß
Thomas
			 
			
					
				Re: timestamp
				Verfasst: 12.11.2010 08:35
				von mk-soft
				Muss glaube ich noch in Rauten '#datum#' gesetzt werden...
Code: Alles auswählen
;-TOP
; Kommentar     : Formatumwandlung von Datum nach SQL Datum
; Author        : mk-soft
; Second Author :
; Datei         : DateHelper.pb
; Version       : 1.01
; Erstellt      : 2007.03.03
; Geändert      :
;
; Compilermode  :
;
; ***************************************************************************************
; Import "oleaut32.lib"
;  VarBstrFromDate(dblln.d, lcid.l, dwFlags.l, *pbstrOut)                                                 
;  VarDateFromStr(strIn.p-unicode, lcid.l, dwFlags, *pdateOut)
; EndImport
Structure udtDatum
  StructureUnion
    dblVal.d
    lVal.l[2]
  EndStructureUnion
EndStructure
Procedure.l VarBstrFromDate(dblln.d, lcid.l, dwFlags.l, *pbstrOut)
  Protected datum.udtDatum, low.l, hight.l
  
  datum\dblVal = dblln
  
  ProcedureReturn VarBstrFromDate_(datum\lVal[0], datum\lVal[1], lcid.l, dwFlags.l, *pbstrOut)
  
EndProcedure
Procedure VarDateFromStr(strIn.s, lcid.l, dwFlags, *pdateOut)
  ProcedureReturn VarDateFromStr_(strIn.s, lcid.l, dwFlags, *pdateOut)
EndProcedure
; ***************************************************************************************
Procedure.s SqlDateStrFromDate(date.d)
  Protected result.s, datum.s, *pbstrOut
 
  If VarBstrFromDate(date, $0407, #LOCALE_NOUSEROVERRIDE, @*pbstrOut) <> #S_OK
    ProcedureReturn "0000-00-00 00:00:00"
  EndIf
 
  result = PeekS(*pbstrOut,#PB_Any, #PB_Unicode)
  SysFreeString_(*result)
  If Len(result) <= 8
    ProcedureReturn "0000-00-00 00:00:00"
  EndIf
 
  datum = Mid(result, 7, 4) + "-"
  datum + Mid(result, 4, 2) + "-"
  datum + Mid(result, 0, 2) + "-"
  datum + Mid(result, 12, 8)
  If Len(datum) < 12
    datum + "00:00:00"
  EndIf
  ProcedureReturn datum
 
EndProcedure
; ***************************************************************************************
Procedure.s SqlDateStrFromDateStr(date.s)
  Protected datum.d, result.s
  VarDateFromStr(date, 0, #LOCALE_NOUSEROVERRIDE, @datum)
  Debug datum
  result = SqlDateStrFromDate(Datum)
  ProcedureReturn result
 
EndProcedure
; ***************************************************************************************
Procedure.d DateFromDateStr(date.s)
  Protected datum.d, result.s
  VarDateFromStr(date, 0, #LOCALE_NOUSEROVERRIDE, @datum)
  ProcedureReturn datum
 
EndProcedure
; ***************************************************************************************
; Test
datum.d = 23974.625
Debug SqlDateStrFromDate(datum) 
Debug SqlDateStrFromDateStr("8/20/65 3:00 PM")
Debug SqlDateStrFromDateStr("20.8.2009 15:00")
Debug SqlDateStrFromDateStr("20-08-65 15:00")
Debug DateFromDateStr("2009.08.20 15:00:00")
FF 

 
			 
			
					
				Re: timestamp
				Verfasst: 12.11.2010 10:30
				von ts-soft
				Lt. Doku MySQL wird dasselbe Format wie PB oder Unix verwendet, oder bin ich da im Irrtum?
Der obrige Code bezieht sich wohl auf propitäres MS zeuchx?
			 
			
					
				Re: timestamp
				Verfasst: 12.11.2010 17:03
				von ath
				ts-soft hat geschrieben:Der obrige Code bezieht sich wohl auf propitäres MS zeuchx?
Was meinst Du? Die {ts '...} Anweisung? Das ist Standard-SQL und funzt im MS-SQL genauso wie im MySQL.
Gruß
Andreas
 
			 
			
					
				Re: timestamp
				Verfasst: 12.11.2010 17:12
				von ts-soft
				ath hat geschrieben:ts-soft hat geschrieben:Der obrige Code bezieht sich wohl auf propitäres MS zeuchx?
Was meinst Du? Die {ts '...} Anweisung? Das ist Standard-SQL und funzt im MS-SQL genauso wie im MySQL.
Gruß
Andreas
 
Ich meine den Code von mk-soft. Der ist doch Windows-Only. SQL ist aber IMHO plattformübergreifend.
Gibts aber anscheinend verschiedene Timestamps, gottseidank programmiere ich keine Datenbanken  
