我需要分割像'01 / 12/15'这样的日期,并将年份部分从15改为2015年(即2015年12月1日)。我通过SQL查询得到了年份:
select YEAR('10/12/15')
它返回2015年。但我必须将15更换为2015年。我如何实现这一目标。 有人在这里请帮助我。提前谢谢..
编辑:
我也尝试过追查...
declare @date varchar='10/12/2015'
declare @datenew date
SELECT @datenew=CONVERT(nvarchar(10), CAST(@date AS DATETIME), 103)
print @datenew
但它会抛出一些错误: 从字符串转换日期和/或时间时转换失败。
如何将varchar更改为日期并将其年份部分替换为4位数...请帮帮我..
DECLARE @intFlag INT,@date varchar(150),@payperiod numeric(18,0),@emp_Id varchar(50)
SET @intFlag = 1
declare @count as int set @count=(select count(*) from @myTable)
WHILE (@intFlag <=@count)
BEGIN
select @emp_Id=Employee_Id from @myTable where rownum=@intFlag
select @date=attendance_date from @myTable where rownum=@intFlag
declare @datenew datetime
SELECT @datenew=convert(datetime,CONVERT(nvarchar(10), CAST(@date AS DATETIME), 103) ,103)
它抛出错误“将varchar数据类型转换为日期时间数据类型导致超出范围的值。”
答案 0 :(得分:1)
将Date对象强制转换为VARCHAR
的最简单方法SELECT RIGHT(CAST(YEAR('10/12/15') AS VARCHAR), 2)
答案 1 :(得分:1)
值'01/12/15'
的数据类型是什么?
也许这会对你有所帮助:
SELECT YEAR(CAST('10/12/15' AS DATE))
答案 2 :(得分:1)
如果您想更改格式并获取varchar,请尝试使用:
SELECT CONVERT(varchar(10), CAST('10/12/15' AS DATETIME), 105)
我希望它有所帮助。
答案 3 :(得分:1)
如您所说,您的列位于varchar
类型,请尝试以下
<强>查询强>
CREATE TABLE #temp
(
dt VARCHAR(50)
);
INSERT INTO #temp VALUES
('01/12/15'),
('02/12/15'),
('03/12/15'),
('04/12/15'),
('05/12/15');
UPDATE #temp
SET dt = REPLACE(LEFT(dt, LEN(dt) - 2)
+ CAST(YEAR(CAST(dt AS DATE)) AS VARCHAR(4)), '/', '-');
SELECT * FROM #temp;
修改强>
在声明变量@date
时,您没有指定长度。
检查下面的sql查询。
declare @date varchar(10)='10/12/2015'
declare @datenew date
SELECT @datenew=CONVERT(nvarchar(10), CAST(@date AS DATETIME), 103)
print @datenew
答案 4 :(得分:1)
您的查询问题是您没有指定varchar
数据类型的长度:
declare @date varchar(12)='10/12/2015'
declare @datenew date
SELECT @datenew=CONVERT(nvarchar(10), CAST(@date AS DATETIME), 103)
print @datenew
答案 5 :(得分:1)
尝试使用:
Declare @date nvarchar(20)='10/12/15'
Declare @datenew nvarchar(40)
SELECT @datenew=CONVERT(nvarchar(10), CAST(@date AS DATETIME), 103)
Print @datenew