MySQL Charset Fails When DateTime Column on WHERE Clause
I have a MYSQL query like below:
SELECT YA.PROGRAMNAME
FROM TABLE_Y YA
WHERE YA.PROGRAMID=9845
AND YA.ENDDATE>NOW()
When executed, this query doesn't correctly return the language specific characters (here, Turkish characters) Above query outputs:
Zaman?n Tan???
Turkish characters are replaced with question marks.
If I omit the last line of the query, then it works correctly but I miss to control if the program's end开发者_开发百科 date is greater than now.
SELECT YA.PROGRAMNAME
FROM TABLE_Y YA
WHERE YA.PROGRAMID=9845
/* Outputs: Zamanın Tanığı */
On a side note: the charset for TABLE_Y is latin5.
What can I do to have it working correctly? Thanks.
Strange behavior with WHERE clause.
I'd suggest you to configure session before selecting, e.g. -
SET NAMES latin5; -- or SET NAMES utf8;
SELECT YA.PROGRAMNAME
FROM TABLE_Y YA
...
EDIT
Cannot reproduce the problem. There may be a problem on the client, but I'm not sure.
CREATE TABLE table_y(
PROGRAMID INT(11) NOT NULL AUTO_INCREMENT,
PROGRAMNAME VARCHAR(255) DEFAULT NULL,
ENDDATE DATE DEFAULT NULL,
PRIMARY KEY (PROGRAMID)
)
ENGINE = INNODB
CHARACTER SET latin5
COLLATE latin5_turkish_ci;
INSERT INTO table_y VALUES
(1, 'Zamanın Tanığı', '2014-10-03'),
(2, 'Zamanın Tanığı', '2011-06-03');
SET NAMES latin1;
SELECT YA.PROGRAMNAME FROM TABLE_Y YA WHERE YA.PROGRAMID = 1 AND YA.ENDDATE > NOW();
---------------------------
Zaman?n Tan???
SET NAMES latin5;
SELECT YA.PROGRAMNAME FROM TABLE_Y YA WHERE YA.PROGRAMID = 1 AND YA.ENDDATE > NOW();
---------------------------
Zamanın Tanığı
精彩评论