为什么要申请" to_date" ,在"其中"表达式,对于已经类型为#34的变量; date"?

时间:2014-06-15 13:32:28

标签: mysql

我有一种感觉,这个问题应该很容易回答,但由于某种原因,我到处搜索并空手而归,即使使用mysql docs中的搜索功能也没有返回" to_date&# 34;功能完全!!! 有人可以解释为什么使用" to_date" on" bdate"这已经是" date"变量?为什么要再次将它转换为日期?实际上是" to_date"的解释很感激,因为搜索文档并没有产生任何有用的东西吗? 在一些讲座幻灯片中,教授举了一个例子:

mysql> create table student
(SID DECIMAL(7) primary key not null,
SNAME VARCHAR (20), MAJOR CHAR(4), YEAR DEC(1),
BDATE DATE);

然后他使用以下方式查询:

select s.sname
from student s
where to_date(s.bdate) like '%13%';

1 个答案:

答案 0 :(得分:2)

假设这个问题真的是关于具有to_date()功能的Oracle或Postgres,这似乎是一个非常糟糕的主意。也许意图更像是:

select s.sname
from student s
where to_char(s.bdate, 'YYYY-MM-DD') like '%13%';

除了使用to_date()之外,like比较是假设字符串。在这种情况下,转换为日期对我来说没有意义。

编辑:

我应该添加Oracle explicitly warns来反对这样做:

  

不要将带有DATE值的TO_DATE函数用于char   论点。返回的DATE值的前两位数可以不同   来自原始字符,取决于fmt或默认日期格式。