我有一张桌子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
答案 0 :(得分:6)
假设HIREDATE
是DATE
或DATETIME
数据类型,那么您可以这样做:
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中,所有显式转换都是使用CAST
和CONVERT
完成的。请参阅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