Əsas səhifə > MySQL, Oracle, Oracle SQL > Oracle’s to_char, to_date and to_number functions equivalents in MySQL

Oracle’s to_char, to_date and to_number functions equivalents in MySQL

Çox faydalı explicit conversion funksiyalarından danışacıq bugün.
Oracle-da olan to_char, to_number və to_date-ə baxacıq.

İlk öncə to_char-ın date ilə işlənməsinə. Bu funksiyanın köməyi ilə biz müxtəlif şəkildə date tiplərlə necə deyərlər oynaya bilərik. İlk Öncə Oracle nümunə daha sonra da MySQL nümunəyə baxırıq:
current date-i hər iki RDBMS-dən götürürük:

select sysdate from dual;
>>> 08-OCT-13

select curdate() from dual;
+------------+
| curdate()  |
+------------+
| 2013-10-10 |
+------------+

Nümunələrə baxaq:

-- 1
-- Oracle

select to_char(sysdate,'Month') from dual;
>>> October

-- MySQL
select date_format(curdate(),'%M') from dual;
+-----------------------------+
| date_format(curdate(),'%M') |
+-----------------------------+
| October                     |
+-----------------------------+

-- 2
-- Oracle 

select to_char(sysdate,'MM') from dual;
>>> 10

-- MySQL
select date_format(curdate(),'%m') from dual;

+-----------------------------+
| date_format(curdate(),'%m') |
+-----------------------------+
| 10                          |
+-----------------------------+

-- 3
-- Oracle

select to_char(sysdate,'YYYY') from dual;
>>> 2013

-- MySQL
select date_format(curdate(),'%Y') from dual;
+-----------------------------+
| date_format(curdate(),'%Y') |
+-----------------------------+
| 2013                        |
+-----------------------------+

-- 4
-- Oracle

select to_char(sysdate,'YY') from dual;
>>> 13

-- MySQL

select date_format(curdate(),'%y') from dual;
+-----------------------------+
| date_format(curdate(),'%y') |
+-----------------------------+
| 13                          |
+-----------------------------+

-- 5
-- Oracle

select to_char(sysdate,'Day') from dual;
>>> Thursday 

-- MySQL
select date_format(curdate(),'%W') from dual;
+-----------------------------+
| date_format(curdate(),'%W') |
+-----------------------------+
| Thursday                    |
+-----------------------------+

-- 6
-- Oracle

select to_char(sysdate,'DD') from dual;
>>> 10

-- MySQL

select date_format(curdate(),'%d') from dual;
+-----------------------------+
| date_format(curdate(),'%d') |
+-----------------------------+
| 10                          |
+-----------------------------+

Və.s bu kimi nümunələrlə davam etmək olar lakin, düşünürəm ki, ən çox istifadə olunanlar elə bunlardır.
MySQL date_format funksiyası haqqında daha ətraflı dokumentasiyada:
function_date-format

Daha sonra to_date funksiyası:

-- 1
-- Oracle

SELECT TO_DATE('25,10,2013', 'DD,MM,YYYY') FROM dual;
SELECT TO_DATE('25.10.2013', 'DD.MM.YYYY') FROM dual;
SELECT TO_DATE('25/10/2013', 'DD/MM/YYYY') FROM dual;
>>> 25-OCT-13

-- MySQL

SELECT STR_TO_DATE('25,10,2013', '%d,%m,%YYYY');
+------------------------------------------+
| STR_TO_DATE('25,10,2013', '%d,%m,%YYYY') |
+------------------------------------------+
| 2013-10-25                               |
+------------------------------------------+


SELECT STR_TO_DATE('25.10.2013', '%d.%m.%YYYY');
+------------------------------------------+
| STR_TO_DATE('25.10.2013', '%d.%m.%YYYY') |
+------------------------------------------+
| 2013-10-25                               |
+------------------------------------------+


SELECT STR_TO_DATE('25/10/2013', '%d/%m/%YYYY');
+------------------------------------------+
| STR_TO_DATE('25/10/2013', '%d/%m/%YYYY') |
+------------------------------------------+
| 2013-10-25                               |
+------------------------------------------+


-- 2
-- Oracle

select to_date('25,OCT','DD,MON') from dual;
>>> 25-OCT-13

-- MySQL

SELECT STR_TO_DATE('25,10', '%d,%m');
+-------------------------------+
| STR_TO_DATE('25,10', '%d,%m') |
+-------------------------------+
| 0000-10-25                    |
+-------------------------------+

Yuxarıdakı son misaldan belə nəticə çıxır ki, Oracle-dan fərqli olaraq MySQL default olaraq heç bir əlavələr etmir və göstərilməyən şərtin əvəzinə 0-lar yazır.

str_to_date funksiyası haqqında: function_str_to_date

Və sonuncu to_number funksiyası haqqında:

-- 1
-- Oracle

select to_number('$1000') from dual;
>>> ORA-01722: invalid number
01722. 00000 -  "invalid number"

-- MySQL

mysql> select cast('$1000' as unsigned) from dual;
+---------------------------+
| cast('$1000' as unsigned) |
+---------------------------+
|                         0 |
+---------------------------+
1 row in set, 1 warning (0.00 sec)

mysql> show warnings;
+---------+------+--------------------------------------------+
| Level   | Code | Message                                    |
+---------+------+--------------------------------------------+
| Warning | 1292 | Truncated incorrect INTEGER value: '$1000' |
+---------+------+--------------------------------------------+
1 row in set (0.00 sec)


-- 2
-- Oracle

select to_number('$1000','$9999') from dual;
>>> 1000

-- MySQL

select cast(substr('$1000',2) as unsigned) from dual;
+-------------------------------------+
| cast(substr('$1000',2) as unsigned) |
+-------------------------------------+
|                                1000 |
+-------------------------------------+

MySQL CAST funksiyası haqqında daha ətraflı:
CAST

Təşəkkürlər😉

Kateqoriyalar: MySQL, Oracle, Oracle SQL
  1. cavid
    Oktyabr 11, 2013 tarixində, saat 07:52

    Chox saolun,deyerli melymat uchun)

  1. No trackbacks yet.

Bir cavab yazın

Sistemə daxil olmaq üçün məlumatlarınızı daxil edin və ya ikonlardan birinə tıklayın:

WordPress.com Loqosu

WordPress.com hesabınızdan istifadə edərək şərh edirsinz. Çıxış / Dəyişdir )

Twitter rəsmi

Twitter hesabınızdan istifadə edərək şərh edirsinz. Çıxış / Dəyişdir )

Facebook fotosu

Facebook hesabınızdan istifadə edərək şərh edirsinz. Çıxış / Dəyişdir )

Google+ foto

Google+ hesabınızdan istifadə edərək şərh edirsinz. Çıxış / Dəyişdir )

%s qoşulma

%d bloqqer bunu bəyənir: