SQL SELECT 连接日期和 Int 字段并将结果转换为 Int
SQL SELECT Concatenate Date and Int fields and convert result to Int
我试图在我的查询中将日期字段和数字字段合并为一个 - 我需要日期显示为数字,后面是序列号。
我试过了
SELECT CAST(movement_date AS int) + CAST(sequence_no AS int) AS MOVE
这给出了日期 03/11/2015 和序列号 000003 的结果 42312。但是我需要结果 42309000003 - 所以日期和序列连接为 INT 而不是相加。
您需要将其像字符串一样追加为:
SELECT CAST(CAST(movement_date AS int) as varchar(5)) + CAST(CAST(sequence_no AS int) as varchar(6)) AS MOVE
编辑:
SELECT (CAST(CAST(movement_date AS int) as varchar(5)) +
RIGHT('00000'+ CAST(CAST(sequence_no AS int) as varchar(6)),6)) AS [MOVE]
或者您可以像这样使用 REPLICATE 来填充所需数量的 0:
SELECT CAST(CAST(movement_date AS int) as varchar(5)) + REPLICATE('0',6-LEN(CAST(CAST(sequence_no AS int) as varchar(6)))) AS [MOVE]
这就是你应该做的。
SELECT
{fn concat(CAST(CAST(movement_date AS int) AS varchar), CAST(CAST(sequence_no AS int) AS varchar))} AS MOVE FROM table_name
或
SELECT
CONCAT(CAST(CAST(movement_date AS int) AS varchar), CAST(CAST(sequence_no AS int) AS varchar)) AS MOVE FROM table_name
如果您仍想 select 作为 int 或任何其他数字类型,您只需将所有内容封装到 CAST(value AS anyNumberType) 中。
编辑:
如果你想在 "sequence_no" 中保留前导零,你不应该 CAST 为 int,因为这是删除前导零的地方。只是转换成别的东西(也许是 varchar)。
SELECT
{fn concat(CAST(CAST(movement_date AS int) AS varchar), CAST(sequence_no AS varchar))} AS MOVE FROM table_name
或
SELECT
CONCAT(CAST(CAST(movement_date AS int) AS varchar), CAST(sequence_no AS varchar)) AS MOVE FROM table_name
此外,您可以使用“+”号连接非数字值,但我更喜欢函数:)
SELECT CAST(movement_date AS int) + CAST(sequence_no AS int) AS MOVE
如果你想用 sequence_no 附加你的 movemen_date 那么不要将它们转换为 int。
Cast tem as nvarchar.
SELECT CAST(movement_date AS nvarchar(max)) + CAST(sequence_no AS nvarchar(max)) AS MOVE
我试图在我的查询中将日期字段和数字字段合并为一个 - 我需要日期显示为数字,后面是序列号。
我试过了
SELECT CAST(movement_date AS int) + CAST(sequence_no AS int) AS MOVE
这给出了日期 03/11/2015 和序列号 000003 的结果 42312。但是我需要结果 42309000003 - 所以日期和序列连接为 INT 而不是相加。
您需要将其像字符串一样追加为:
SELECT CAST(CAST(movement_date AS int) as varchar(5)) + CAST(CAST(sequence_no AS int) as varchar(6)) AS MOVE
编辑:
SELECT (CAST(CAST(movement_date AS int) as varchar(5)) +
RIGHT('00000'+ CAST(CAST(sequence_no AS int) as varchar(6)),6)) AS [MOVE]
或者您可以像这样使用 REPLICATE 来填充所需数量的 0:
SELECT CAST(CAST(movement_date AS int) as varchar(5)) + REPLICATE('0',6-LEN(CAST(CAST(sequence_no AS int) as varchar(6)))) AS [MOVE]
这就是你应该做的。
SELECT
{fn concat(CAST(CAST(movement_date AS int) AS varchar), CAST(CAST(sequence_no AS int) AS varchar))} AS MOVE FROM table_name
或
SELECT
CONCAT(CAST(CAST(movement_date AS int) AS varchar), CAST(CAST(sequence_no AS int) AS varchar)) AS MOVE FROM table_name
如果您仍想 select 作为 int 或任何其他数字类型,您只需将所有内容封装到 CAST(value AS anyNumberType) 中。
编辑: 如果你想在 "sequence_no" 中保留前导零,你不应该 CAST 为 int,因为这是删除前导零的地方。只是转换成别的东西(也许是 varchar)。
SELECT
{fn concat(CAST(CAST(movement_date AS int) AS varchar), CAST(sequence_no AS varchar))} AS MOVE FROM table_name
或
SELECT
CONCAT(CAST(CAST(movement_date AS int) AS varchar), CAST(sequence_no AS varchar)) AS MOVE FROM table_name
此外,您可以使用“+”号连接非数字值,但我更喜欢函数:)
SELECT CAST(movement_date AS int) + CAST(sequence_no AS int) AS MOVE
如果你想用 sequence_no 附加你的 movemen_date 那么不要将它们转换为 int。
Cast tem as nvarchar.
SELECT CAST(movement_date AS nvarchar(max)) + CAST(sequence_no AS nvarchar(max)) AS MOVE