在 T-SQL 中将 varchar 转换为 bigint
Converting varchar to bigint in T-SQL
我正在为我的网络应用程序 SQL 做计算部分,
我有一些标量变量:
declare @calc as bigint
declare @paymentid as nvarchar(50)
我正在使用这样的变量
set @calc =(SELECT REPLACE(CONVERT(CHAR(30), '2017-09-02', 103), '-', ''))
此行删除 '-'
并将 @calc
中的值设置为 (20170902)
set @calc = (SELECT SUBSTRING(CONVERT(char(30), '2017-09-02',112), 3, 8))
这一行正在获取 170902
并将 @calc
中的值设置为 (170902)
set @paymentid = CAST(@calc as nvarchar(max))+'0001'
并且此行会将 paymentid
的值设置为 (1709020001)
但是我在这一行遇到错误
set @calc = (SELECT SUBSTRING(CONVERT(char(30), '2017-09-02',112), 3, 8))
错误是:
Msg 8114, Level 16, State 5, Line 4
Error converting data type varchar to bigint
我的整个代码如下所示
declare @calc as bigint
declare @paymentid as nvarchar(50)
set @calc =(SELECT REPLACE(CONVERT(CHAR(30), '2017-09-02', 103), '-', ''))
set @calc = (SELECT SUBSTRING(CONVERT(char(30), '2017-09-02',112), 3, 8))
set @paymentid = CAST(@calc as nvarchar(max))+'0001'
替换
set @calc = (SELECT SUBSTRING(CONVERT(char(30), '2017-09-02',112), 3, 8))
至
set @calc = (SELECT SUBSTRING(CONVERT(char(30), @calc,112), 3, 8))
如果您有 SQL Server 2012 或更高版本,您可以这样做:
declare
@now date = getdate(), -- using getdate, but you can put in a hard coded or provided date as necessary
@paymentid nvarchar(50)
select @paymentid = format(@now, 'yyMMdd0001')
select @PaymentId --1709010001
或更简洁....
select @paymentid = format(getdate(), 'yyMMdd0001')
你可以把它缩短很多...
declare @paymentid as nvarchar(50)
declare @someDate date = '2017-09-02'
set @paymentid = convert(varchar(12),@someDate,12) + '0001'
select @paymentid
我正在为我的网络应用程序 SQL 做计算部分,
我有一些标量变量:
declare @calc as bigint
declare @paymentid as nvarchar(50)
我正在使用这样的变量
set @calc =(SELECT REPLACE(CONVERT(CHAR(30), '2017-09-02', 103), '-', ''))
此行删除 '-'
并将 @calc
中的值设置为 (20170902)
set @calc = (SELECT SUBSTRING(CONVERT(char(30), '2017-09-02',112), 3, 8))
这一行正在获取 170902
并将 @calc
中的值设置为 (170902)
set @paymentid = CAST(@calc as nvarchar(max))+'0001'
并且此行会将 paymentid
的值设置为 (1709020001)
但是我在这一行遇到错误
set @calc = (SELECT SUBSTRING(CONVERT(char(30), '2017-09-02',112), 3, 8))
错误是:
Msg 8114, Level 16, State 5, Line 4
Error converting data type varchar to bigint
我的整个代码如下所示
declare @calc as bigint
declare @paymentid as nvarchar(50)
set @calc =(SELECT REPLACE(CONVERT(CHAR(30), '2017-09-02', 103), '-', ''))
set @calc = (SELECT SUBSTRING(CONVERT(char(30), '2017-09-02',112), 3, 8))
set @paymentid = CAST(@calc as nvarchar(max))+'0001'
替换
set @calc = (SELECT SUBSTRING(CONVERT(char(30), '2017-09-02',112), 3, 8))
至
set @calc = (SELECT SUBSTRING(CONVERT(char(30), @calc,112), 3, 8))
如果您有 SQL Server 2012 或更高版本,您可以这样做:
declare
@now date = getdate(), -- using getdate, but you can put in a hard coded or provided date as necessary
@paymentid nvarchar(50)
select @paymentid = format(@now, 'yyMMdd0001')
select @PaymentId --1709010001
或更简洁....
select @paymentid = format(getdate(), 'yyMMdd0001')
你可以把它缩短很多...
declare @paymentid as nvarchar(50)
declare @someDate date = '2017-09-02'
set @paymentid = convert(varchar(12),@someDate,12) + '0001'
select @paymentid