我想从日期列等于特定日期的表中进行选择,该日期作为字符串以“yyyy-mm-dd”格式发送。我需要转换该字符串,然后比较表中是否有该日期。
现在我正在这样做:
select *
FROM table
where CONVERT(char(10), date_column,126) = convert(char(10), '2016-10-28', 126)
date_column 是表中的日期类型,我需要以这种格式“yyyy-mm-dd”从表中获取它,因为我使用 126 格式。我只是不确定在哪里转换已经采用该格式的字符串,是否需要转换它,因为我不知道使用它是否好:
CONVERT(varchar(10), date_column,126) = '2016-10-28'
原文由 SeaSide 发布,翻译遵循 CC BY-SA 4.0 许可协议
您也不需要转换列。事实上,最好不要转换列,因为在列上使用函数会阻止 sql server 使用任何可能有助于该列上的查询计划的索引。此外,您正在将字符串转换为 char(10) - 最好将其转换为日期:
此外,如果您使用的是 datetime 数据类型而不是 date,则需要检查 datetime 值是否介于您传递到下一个日期的日期之间。