Sql server Sql Server转换问题?从字符串到日期时间?问题是我没有字符串字段

Sql server Sql Server转换问题?从字符串到日期时间?问题是我没有字符串字段,sql-server,date,Sql Server,Date,我想选择一个特定的日期,但mySql表示存在转换问题 这是我的结构 Table AssAttestati ID int Allow Nulls (No), matricola varchar(MAX) Allow Nulls (YES), attestato int Allow Nulls (YES), dataS date Allow Nulls (YES), scadenza date Allow Nulls (YES), PDF varchar(250) Allow Nulls (YES

我想选择一个特定的日期,但mySql表示存在转换问题

这是我的结构

Table AssAttestati

ID int Allow Nulls (No),
matricola varchar(MAX) Allow Nulls (YES),
attestato int Allow Nulls (YES),
dataS date Allow Nulls (YES),
scadenza date Allow Nulls (YES),
PDF varchar(250) Allow Nulls (YES),
validita int Allow Nulls (YES).

它说从字符串到日期的转换是错误的,但我没有一个字符串字段,它们是明确的:scadenzadate和dataSdate。UNION的SELECT语句中的列混淆了。第一个查询返回:

Dipendenti.cognome,
Dipendenti.nome,
AssAttestati.dataS,
AssAttestati.scadenza,
....
第二个返回时:

Dipendenti.cognome,
Dipendenti.nome,
Dipendenti.matricola,
AssAttestati.dataS,
...
这意味着它返回一个varcharmax字段,其中包含预期的日期。查询引擎将尝试将其转换为日期,但在找到第一个不可解析的字符串时,转换失败并出现错误

更改第二个查询的SELECT以匹配第一个查询:

SELECT Dipendenti.cognome,
       Dipendenti.nome,
       AssAttestati.dataS,
       AssAttestati.scadenza,
       Dipendenti.matricola,
       AssAttestati.PDF,
       AssAttestati.ID

无论如何,仅仅为了方便而使用varcharmax是个坏主意。这些字段用于存储不需要编制索引且使用不同存储的blob。连接这些字段将导致两个表的完整表扫描

请发布整个错误消息不知道如何正确地从意大利语翻译过来。。将字符串转换为日期或时间时转换失败。它是联合查询的第三列。AssAttestati.dataS是日期,而Dipendenti.matricola是varchar空格,别名使SQL更具可读性。AssAttestati.scadenza>='24/06/2018'将本地化字符串与日期列进行比较。该字符串的翻译方式取决于服务器的区域设置。根本不要使用那种格式。首先,使用带有强类型日期参数的参数化查询。如果你不能,为什么?使用YYYYMMDD格式,这是唯一明确的日期格式OK,干得好!现在工作得很有魅力!感谢您提供有关varchar数据类型字段的提示。。。我用varcharMAX作为名字,因为有些人有4-5个名字,我担心这不合适
Dipendenti.cognome,
Dipendenti.nome,
AssAttestati.dataS,
AssAttestati.scadenza,
....
Dipendenti.cognome,
Dipendenti.nome,
Dipendenti.matricola,
AssAttestati.dataS,
...
SELECT Dipendenti.cognome,
       Dipendenti.nome,
       AssAttestati.dataS,
       AssAttestati.scadenza,
       Dipendenti.matricola,
       AssAttestati.PDF,
       AssAttestati.ID