Dátum típusú osztlop létrehozása modulon keresztül az adatbázisba

kkwx képe

hellósztok

egy olyan problémám lenne, hogy létrehoztam egy modult, és az install fájljában csinálok néhány adatbázis táblát, amikbe kéne dátum formátumú oszlop, de ha létre akarom hozni hibát jelez, hogy nem tudja létrehozni a táblát. Így próbálom megoldani:

'datum' => array(
'type' => 'date',
'not null' => TRUE,
'default' => ''),

egy leírásban azt olvastam, hogy datetime típust létre lehet hozni, de date-ől nem írnak, ezért érdekelne, hogy létre lehet egyáltalán hozni így dátumoszlopot, vagy csak datetime-ot? és ha csak datetime-ot, akkor azt lehet kezelni csak dátumként, vagyis lehet bele tölteni csak dátumot idő megadása nélkül, és lehet kiolvasni belőle csak a dátumrészt? és ha igen, akkor hogyan?

Előre is kösz minden segítséget.

sgabe képe

A Schema API miatt 6.x-ben nem lehet DATE típusú mezőt létrehozni, de 7.x-ben már igen. Használhatsz helyette DATETIME típust, vagy INT-et TIMESTAMP tárolásra. Ha még nem nézted, a Date modul és a Date API sokat segíthet. A DATETIME jó nem teljes dátumok tárolására is.

0
0
kkwx képe

akkor maradok a datetime-nál, de így sem akar működni. ezt használom:

'datum' => array(
'type' => 'datetime',
'not null' => TRUE,
'default' => ''),

és ezt az üzenetet válaszolja és nem hozza létre a táblákat:

user warning: Invalid default value for 'datum' query: CREATE TABLE foglal_reg ( `uid` INT unsigned NOT NULL DEFAULT 0, `datum` DATETIME NOT NULL DEFAULT '', `tartam` INT unsigned NOT NULL DEFAULT 0, `allapot` VARCHAR(255) NOT NULL DEFAULT '', PRIMARY KEY (reg_fog_id) ) /*!40100 DEFAULT CHARACTER SET UTF8 */ in C:\wamp\www\honlap\includes\database.inc on line 529.

ilyenkor mi lehet a probléma? és ha nincs megoldás, akkor az INT-es TIMESTAMP tárolás milyen módszer? hogyan működik? bonyolultabb vagy könnyű átkonvertálni INT-é egy dátumot?

0
0
fgabor képe

Hello!

A default-nál nem lehagysz egy "-öt? Nekem ez teljesen jól megy: 'date' => array('type' => 'datetime', 'not null' => FALSE),

0
0
kkwx képe

az nem " hanem két ' :)

0
0
sgabe képe

Invalid default value for 'datum'

Azt jelenti, hogy a meződ alapértelmezett értéke nem megfelelő, jelen esetben konkrétan üres. Ha a mező NOT NULL = TRUE; akkor állíts be neki valamit, vagy legyen NOT NULL = FALSE;

0
0
kkwx képe

aha, értem, akkor átalakítom:

'datum' => array(
'type' => 'date',
'not null' => FALSE),

vagy default értéket hogyan adhatok meg neki? ha beírok mondjuk 1-et akkor 1900-01-01 00:01-nek érzékeli? vagy valamilyen formában kell beírni a dátumot? (sajnos ennek a szintaktikájában nem vok otthon :( ), és kötelező időt is megadni, vagy dátum elég?

bocs, hogy ennyit bénázok, csak még bele kell jönnöm :)

0
0
csg képe

A Drupal int típust használ, és a dátumokat timestampként tárolja.

A timestamp azért jó, mert könnyű vele számolni, és kiíráskor alakíthatod a Drupal admin felületén beállított formátumok szerint, pl:

format_date($timestamp, "small"))

0
0

--
Csonka Gergely
http://cheppers.com