lua:datetime
Obsah
Příklady práce s datumem
Datum v proměnné LUA by se měl používat vždy ve formátu čísla os.time().
FieldByName/SetFieldByName
FieldByName vrací tabulku {dateTimeUnix = integer}.
--Nacteni datumu z OBISu - vraci se tabulka s prvkem dateTimeUnix local Datum = DSI:FieldByName("Datum").dateTimeUnix --kdyz je v databazi NULL bude promenna Datum = {dateTimeUnix = ""} --Vlozeni datumu do OBISu SetFieldByName("Datum", {dateTimeUnix=Datum}) --Pokud chci pouzit aktualni datum local Datum=os.time() --prime pouziti v SetField (cf.Now() je obsolete) SetFieldByName("Datum", {dateTimeUnix=os.time()})
Problém NULL
Pokud je datum NULL vrací {dateTimeUnix = ""} - toto platí od verze 1788. V předchozích verzích se pro NULL vracel rovnou string "".
Pro podmínku zda je datum NULL lze ale v obou verzích použít funkci FieldByNameIsNull()
if DSI:FieldByNameIsNull("Datum") then LuaObj:Print("datum je null") end
DEBUG
DEBUG_WRITE("Datum=",cf.FormatUnixTime(Datum))
Dialogy a SQL
Používat nový typ calendartime a pro SQL cf.FormatSQLUnixTime
res = dlg.create({Caption="Test dialog", Encoding=encoding, Items={ {"calendar1", "calendartime", "kalendář time", "To", os.time()}, {"calendar2", "calendartime", "kalendář time", "To", DSI:FieldByName("Datum").dateTimeUnix}, } local sql = [[select * from rozpocty_rozpocty where Datum < ']]..cf.FormatSQLUnixTime(res.calendar1)..[[']]
Testy
local Datum=cf.UnixTimeDDMMYYYY("1.1.2009 10:01:30") local sql = [[select * from rozpocty_rozpocty where Datum < ']]..cf.FormatSQLUnixTime(cf.UnixTimeDDMMYYYY("1.1.2009 10:01:30"))..[[']]
Reporty
@return DSI:FieldByName("Datum")
Optiony
local DatumOtevreni = cf.UnixTime(ClientSession:GetOption("UctoDM.DatumOtevreni")) ClientSession:SetOption(cf.FormatUnixTime(DatumOtevreni))
lua/datetime.txt · Poslední úprava: 2009/07/21 11:36 autor: Karel Petrů