我有一个数据库设置为奇怪的错误使用CONVERT功能
Account (accountNo, ownerNo, balance)
Owner (ownerNo, firstName, lastName)
Event (id, accountNo, event, amount, eventDate)
所以我想这样做可以列出帐户1所有交易(事件表)为月;
CREATE VIEW FourA AS
SELECT
id, accountNo, event, amount,
CONVERT(varchar, eventDate, 103) AS eventDate
FROM
Event
WHERE
accountNo = 1 AND eventDate >= '01/07/2014' AND eventDate < '31/07/2014'
我第一次跑这个,它跑得很完美。现在,我得到一个错误的CONVERT
功能:
消息242,级别16,状态3,第1行
varchar数据类型为datetime数据类型的转换导致的失范围值。
然而!当我运行:
select
CONVERT(varchar, eventDate, 103) AS eventDate
from
Event
它给出了完美的结果:
eventDate
01/01/2014
07/11/2014
08/01/2014
01/01/2014
07/10/2014
08/02/2014
所以很明显这是没有错的。但是,为什么我不断得到这个奇怪的错误?有人知道吗?
注:这是SQL Server
边注时:你应该为你的列使用适当的数据类型。在'Varchar'中存储'DateTime'值会反复咬你。不要解决这个问题。修复表格。 – 2014-10-07 04:04:00
同意。创可贴不会持续很长时间。 – ps2goat 2014-10-07 04:06:29
@MikeW我实际上确实将它存储为DateTime值,但问题是以很好的格式显示它。因为它显示为2014-01-01 00:00:00.000除非有办法将它存储为MM/DD/YYYY – user2961971 2014-10-07 04:09:29