如何在SQL Server 2008中使用TO_CHAR函数功能

时间:2014-01-30 16:45:18

标签: sql-server sql-server-2008

我有一张桌子EMP。我知道如何在TOAD中使用TO_CHAR函数但是如果我在SQL Server 2008中使用它如何获得相同的输出。在SQL Server中是否有TO_CHAR的转换函数?

请帮我在SQL Server中编写查询。

提前致谢...

 select * 
 from emp 
 where to_char(hiredate, 'yy') like '82';

输出

     EMPNO  ENAME    JOB      MGR    HIREDATE       SAL   COMM   DEPTNO
     7934   MILLER   CLERK    7782   23-JAN-82     1300           10

3 个答案:

答案 0 :(得分:6)

假设HIREDATEDATEDATETIME数据类型,那么您可以这样做:

SELECT *
FROM emp
WHERE YEAR(HIREDATE) = 1982 -- I think that this is the year you want

现在,如果存在索引,该代码将无法在HIREDATE上使用索引,因此您可以这样做:

SELECT *
FROM emp
WHERE HIREDATE >= '19820101' 
AND HIREDATE < '19830101'

另一方面,如果你真的想要使用LIKE '82'条件,意味着你想要1882年,1982年,2082年......的结果,那么你可以使用:

SELECT *
FROM emp
WHERE DATENAME(YEAR,HIREDATE) LIKE '%82'

答案 1 :(得分:2)

在SQL Server 2008中,所有显式转换都是使用CASTCONVERT完成的。请参阅here for the doc

对于你明确的情况,我会这样做:

SELECT * FROM emp WHERE RIGHT(CONVERT(varchar(4), hiredate, 121),2) like '82';

(实际上,我可能会使用YEAR函数并保持数字,但如果我真的需要它作为字符串,那么就像这样)

答案 2 :(得分:1)

许多不同的方式。这是我的两个。

-- If a string, just select right two
declare @temp1 varchar(9) = '23-JAN-82'
select right(@temp1, 2) as yy;


-- If a date, just use japan format
declare @temp2 datetime = '23-JAN-82'
select convert(char(2), @temp2, 11) as yy