Kak da formatiram...

16 отговора 409 прегледа
#1

Kak da formatiram...

Zdraveite!
Imam slednia vapros. Imam slednoto pole v MySql: data tip timestamp. Kak moga da go formatiram kam balgarskia nachin za izvejdane na datata, t.e 19 Fevruari 2002 g, 14:30.
Predvaritelno blagodarya za pomosta

Отговор
в отговор на bob4o #2

Re: Kak da formatiram...

select FROM_UNIXTIME(timestamp,'%d %M %Y g, %h:%i') from tlbtimes

bofh
Отговор
в отговор на bofh #3

Re: Kak da formatiram...

Груба грешка bofh

Linux is like a wigwam - No Windows, No Gates, Apache inside
Отговор
в отговор на bob4o #4

Re: Kak da formatiram...

select DATE_FORMAT(timestamp,'%d %M %Y g, %h:%i') from ...

mysql.online.bg/documentation/mysql/bychapter/manual_Reference.html#Date_and_time_functions

Linux is like a wigwam - No Windows, No Gates, Apache inside
Отговор
в отговор на salle #5

Re: Kak da formatiram...

FROM_UNIXTIME(unix_timestamp,format)
Returns a string representation of the Unix timestamp, formatted according to the format string. format may contain the same specifiers as those listed in the entry for the DATE_FORMAT() function:

mysql> select FROM_UNIXTIME(UNIX_TIMESTAMP(),
'%Y %D %M %h:%i:%s %x');
-> '1997 23rd December 03:43:30 x'

Отговор
в отговор на salle #6

Re: Kak da formatiram...

DATE_FORMAT(date,format)

a ne DATE_FORMAT(timestamp,format)

Отговор
в отговор на salle #7

xex

Не обърнах внимание

Извинения на аудиторията ;)

bofh
Отговор
в отговор на phpGuru #8

Re: Kak da formatiram...

Абсолютно нормално се държи DATE_FORMAT и ако първият параметър е timestamp, така че поэгорният пример си е най-естествения в случая

А ако въпроса е бил за това да изкарва връща

6 февруари 2002 (месеца на български и кирилица) вече става малко по-кашаво

Отговор
в отговор на phpGuru #9

Re: Kak da formatiram...

DATE_FORMAT() работи със всички
DATE, TIME, DATETIME, TIMESTAMP

за разлика от TIME_FORMAT() която не работи с DATE

Linux is like a wigwam - No Windows, No Gates, Apache inside
Отговор
в отговор на salle #10

Re: Kak da formatiram...

probvam versia 3.23.49 i 3.22.32 (rezultata e ednakav zatova niama da go dubliram)

mysql> select FROM_UNIXTIME(UNIX_TIMESTAMP(),'%Y %D %M %h:%i:%s %x');
+--------------------------------------------------------+
| FROM_UNIXTIME(UNIX_TIMESTAMP(),'%Y %D %M %h:%i:%s %x') |
+--------------------------------------------------------+
| 2002 20th February 03:20:44 2002 |
+--------------------------------------------------------+
1 row in set (0.02 sec)

mysql> select DATE_FORMAT(UNIX_TIMESTAMP(),'%Y %D %M %h:%i:%s %x');
+------------------------------------------------------+
| DATE_FORMAT(UNIX_TIMESTAMP(),'%Y %D %M %h:%i:%s %x') |
+------------------------------------------------------+
| NULL |
+------------------------------------------------------+
1 row in set (0.00 sec)

kakvo shte reche tova NULL?? (da rechem po koito i da e standart za data )

Отговор
в отговор на phpGuru #11

Re: Kak da formatiram...

А какво се опитваш да направищ всъщност?

Я пробвай:
select UNIX_TIMESTAMP(), DATE_FORMAT(UNIX_TIMESTAMP(),'%Y %D %M %h:%i:%s %x');


| UNIX_TIMESTAMP() | DATE_FORMAT(UNIX_TIMESTAMP(),'%Y %D %M %h:%i:%s %x') |
+------------------+------------------------------------------------------+
| 1014212155 | NULL |


Ако не схващаш питай

Еквилибристиката:
select FROM_UNIXTIME(UNIX_TIMESTAMP(),'%Y %D %M %h:%i:%s %x');

пък съвсем не я схващам
Можеш да направиш
select 1+1-1 и да получиш 1 ама какъв е смисъла?

Що не направо:
select DATE_FORMAT(NOW(), '%Y %D %M %T');
Както си му е реда?

Linux is like a wigwam - No Windows, No Gates, Apache inside
Отговор
в отговор на salle #12

Re: Kak da formatiram...

ami vish vaprosa na choveka (parvia vapros po temata)!!!! poleto mu e v timestamp, kakvo vrashta UNIX_TIMESTAMP() - timestamp ......... mislia da ne prodaljavam

Отговор
в отговор на salle #13

Re: Kak da formatiram...

a tova deto si go pisal ti

select UNIX_TIMESTAMP(), DATE_FORMAT(UNIX_TIMESTAMP(),'%Y %D %M %h:%i:%s %x');


| UNIX_TIMESTAMP() | DATE_FORMAT(UNIX_TIMESTAMP(),'%Y %D %M %h:%i:%s %x') |
+------------------+------------------------------------------------------+
| 1014212155 | NULL |


ne ti li govori, che DATE_FORMAT() ne priema TIMESTAMP ??

ne izdarjah se pak da ne prodalja

Отговор
в отговор на phpGuru #14

Re: FAQ ili README ili to si pishe ama ....

Типът TIMESTAMP в MySQL и timestamp в Unix света още известен като epoch или броя секунди от 1970-01-01 са различни неща.

Пишат хората документация ама някой трябва и да я чете

Хайде сега бегом марш до MySQL промпта и пиши:

SELECT NOW(), NOW()+0, UNIX_TIMESTAMP(NOW());
И ги разгледай внимателно. Ама МНОООГО внимателно

После пробвай

CREATE TABLE t (dt DATETIME, ts TIMESTAMP);
INSERT INTO t VALUES (NOW(), NOW());
SELECT dt, ts FROM t;
И ги разгледай ОЩЕ ПО-ВНИМАТЕЛНО
Като внимаваш да ги сравниш с резултата от горното.

Всичко това е много добре обяснено в документацията на MySQL

mysql.online.bg/documentation/mysql/bychapter/manual_Reference.html#Date_and_time_types
mysql.online.bg/documentation/mysql/bychapter/manual_Reference.html#DATETIME
mysql.online.bg/documentation/mysql/bychapter/manual_Reference.html#Storage_requirements
mysql.online.bg/documentation/mysql/bychapter/manual_Reference.html#Date_and_time_functions

Linux is like a wigwam - No Windows, No Gates, Apache inside
Отговор
в отговор на salle #15

Re: FAQ ili README ili to si pishe ama ....

А ако и след като прочетеш какво пише в документацията
и ако още не си схванал пробвай следното:

CREATE TABLE t (dt DATETIME, ts TIMESTAMP);
INSERT INTO t VALUES (NOW(), NOW());

SELECT dt, ts, dt+0, UNIX_TIMESTAMP(dt), UNIX_TIMESTAMP(ts) FROM t;


Толкова ли е трудно да загрееш, че всеки тип си има така да се каже Default Display Format?
И че на
DATETIME default форматът e "YYYY-MM-DD HH:II:SS"
на
TIMESTAMP е "YYYYMMDDHHIISS"
Докато UNIX_TIMESTAMP(<date, datetime или timestamp>)
връща БРОЙ СЕКУНДИ

Ама се хабили да пишат документация
Ама направили табличка, която казва

Column type Display format
TIMESTAMP(14) YYYYMMDDHHMMSS
TIMESTAMP(12) YYMMDDHHMMSS
TIMESTAMP(10) YYMMDDHHMM
TIMESTAMP(8) YYYYMMDD
TIMESTAMP(6) YYMMDD
TIMESTAMP(4) YYMM
TIMESTAMP(2) YY

не той разбираш ли си Мислел
и бил Останал с Впечатление
Те документациите са за тъпанари разбираш ли

А за тъпанарите дето не са толкова велики и четат е написано:

UNIX_TIMESTAMP()
UNIX_TIMESTAMP(date)
If called with no argument, returns a Unix timestamp (seconds since '1970-01-01 00:00:00' GMT) as an unsigned integer. If UNIX_TIMESTAMP() is called with a date argument, it returns the value of the argument as seconds since '1970-01-01 00:00:00' GMT. date may be a DATE string, a DATETIME string, a TIMESTAMP, or a number in the format YYMMDD or YYYYMMDD in local time:

mysql> select UNIX_TIMESTAMP();
-> 882226357
mysql> select UNIX_TIMESTAMP('1997-10-04 22:23:00');
-> 875996580

When UNIX_TIMESTAMP is used on a TIMESTAMP column, the function will return the internal timestamp value directly, with no implicit ``string-to-unix-timestamp'' conversion. If you give UNIX_TIMESTAMP() a wrong or out-of-range date, it will return 0. If you want to subtract UNIX_TIMESTAMP() columns, you may want to cast the result to signed integers. S
Linux is like a wigwam - No Windows, No Gates, Apache inside

Редактирано от salle на

Отговор
в отговор на phpGuru #17

Re: S izvinenia za grubia ton...

.

Linux is like a wigwam - No Windows, No Gates, Apache inside
Отговор