Excel ODBC Импорт из MySQL - PullRequest
0 голосов
/ 29 июля 2011

У меня импорт Excel из установки ODBC с использованием MSQuery, и все нужные мне данные и строки возвращаются там нормально, однако, когда я отправляю данные в свою книгу Excel, мне не хватает 3 полей: день, месяц и год. Может кто-нибудь помочь? узнать почему?

SELECT  contract_0.create_date AS 'Submitted Date', 
        -- abbreviating
        contract_0.install_date AS 'installed_US', 
        RIGHT(contract_0.install_date,2) AS 'day', 
        MID(contract_0.install_date,6,2) AS 'month',
        LEFT(contract_0.install_date,4) As 'year'
            -- abbreviating
FROM `web54-reiga-gms`.contact contact_0, `web54-reiga-gms`.contract contract_0, `web54-reiga-gms`.user user_0
WHERE contract_0.contact_id = contact_0.id AND contract_0.user_id = user_0.id

Мой код MSQuery выше

* РЕДАКТИРОВАТЬ **

Я использую Excel 2010 в Windows 7 и MySQL ODBC 3.5

ОБНОВЛЕНИЕ **

CREATE TABLE `contract` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
  `installer` varchar(50) DEFAULT NULL,
  `fitter` varchar(50) DEFAULT NULL,
  `guarantee_no` varchar(50) DEFAULT NULL,
  `contact_id` int(11) DEFAULT NULL,
  `equipment` varchar(32) DEFAULT NULL,
  `certificate_no` varchar(50) DEFAULT NULL,
  `install_date` date DEFAULT '0000-00-00',
  `create_date` date DEFAULT '0000-00-00',
  `edit_date` date DEFAULT '0000-00-00',
  `edited_by` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1;

1 Ответ

0 голосов
/ 29 июля 2011

Вы обрабатываете поле install_date как строку.Вероятно, это поле Date или DateTime, и для получения отдельных значений года, месяца и дня следует использовать функцию extract .

OK.Как я и подозревал, вы имеете дело с датой.Замените эти строки:

    RIGHT(contract_0.install_date,2) AS 'day', 
    MID(contract_0.install_date,6,2) AS 'month',
    LEFT(contract_0.install_date,4) As 'year',

этими:

EXTRACT(YEAR FROM contract_0.install_date) AS 'day', 
EXTRACT(MONTH FROM contract_0.install_date) AS 'month',
EXTRACT(DAY FROM contract_0.install_date) As 'year',
...