Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何根据日期创建序列,即06-11-2020输出字段将为2011001_Sql Server_Tsql - Fatal编程技术网

Sql server 如何根据日期创建序列,即06-11-2020输出字段将为2011001

Sql server 如何根据日期创建序列,即06-11-2020输出字段将为2011001,sql-server,tsql,Sql Server,Tsql,请帮助我在SQL server中编写函数或存储过程,我希望根据日期创建序列,即06-11-2020输出字段将为2011001 到目前为止,我写得很好 DECLARE @NewLotNo varchar(10); DECLARE @PreFix varchar(6); DECLARE @Id int; SELECT @Id = ISNULL(MAX(MeltingId), 0) + 1 FROM tblMelting SELECT @PreFix = C

请帮助我在SQL server中编写函数或存储过程,我希望根据日期创建序列,即06-11-2020输出字段将为2011001

到目前为止,我写得很好

  DECLARE @NewLotNo varchar(10);
  DECLARE @PreFix varchar(6);
  DECLARE @Id int;

  SELECT
    @Id = ISNULL(MAX(MeltingId), 0) + 1
  FROM tblMelting

  SELECT
    @PreFix = CONVERT(char(6), GETDATE(), 112)

  SELECT
    @NewLotNo = RIGHT(@PreFix, 4) + RIGHT('00' + CAST(@Id AS varchar(6)), 6)

  SET NOCOUNT ON

  BEGIN
    INSERT INTO tblMelting (MeltingDt, LotNumber, ItemId, Percentage, GrossWt)
      VALUES (CONVERT(date, @HMeltingDt, 105), @NewLotNo, @HItemId, @HPercentage, @HGrossWt)
  END
它可以工作,但在10个数字之后,它的工作方式就像20110010,应该是2011010

请帮帮我


“问候”

似乎不像
RIGHT('00',6)
你想要
RIGHT('00',3)
。否则,这正是你所要求的。
'0010'
的最后6个字符是
'0010'
*而不是
'010'
。或者您只需停止使用
右…
并定义一个变量
@CurrYear INT=YEAR(GET_DATE)*1000
,然后使用
CAST(@CurrYear+@ID)作为NVARCHAR(10)
或您需要的任何长度
SELECT FORMAT (getdate(), 'yyMMdd') as date