【发布时间】:2019-06-27 08:10:37
【问题描述】:
我试图在我的数据库中显示两个日期(列)之间的天数。输出显示为 varchar 数据类型。我应该如何将其转换为 int 数据类型?以下是弹出给我的错误消息:
消息 245,第 16 级,状态 1,第 42 行
转换 varchar 值“过期天数”时转换失败 数据类型为 int。
我尝试过同时使用 CAST 和 CONVERT 语法,但它们都不起作用。
SELECT DVD_mem_id AS 'Member ID',
DVD_mem_name AS 'Member Name',
DVD_movie_id AS 'Movie ID',
DVD_movie_title AS 'Movie Title',
DVD_borrowing_date AS 'Date of Borrow',
DVD_date_due AS 'Date Due',
CAST('Overdue Day(s)' AS int),
DATEDIFF(DAY, DVD_borrowing_date, DVD_date_due) -3 AS 'Overdue Day(s)',
'Overdue Day(s)' * 2 AS 'Fine Incurred'
FROM DVD_T
WHERE (DVD_mem_id IS NOT NULL) AND
(DVD_mem_name IS NOT NULL) AND
(DVD_borrowing_date IS NOT NULL) AND
(DVD_date_due) IS NOT NULL AND
('Overdue Day(s)' > 0)
【问题讨论】:
-
'Overdue Day(s)'是字符串文字,不能转换为整数。 -
您不能在选择列表或 where 子句中从同一个选择中引用列别名。
标签: sql sql-server sqldatatypes