2014-01-30 31 views
2

我有一个表EMP。我知道如何在TOAD中使用TO_CHAR函数,但如何在SQL Server 2008中使用相同的输出。在SQL Server中是否有任何转换函数用于TO_CHAR如何在SQL Server 2008中使用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 

回答

1

在SQL Server 2008的所有显式转换与CASTCONVERT完成。见here for the doc

为了您明确的情况下,我会做这样的:

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

(当然,实际上,我可能会使用YEAR功能,并保持它的数字代替,但如果我真的需要它是作为一个字符串,那么像这样的)

5

假设HIREDATE要么是DATEDATETIME数据类型,那么你可以做:

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' 
0

许多不同的方式。这里有两个来自我。

-- 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