Sea*_*ide 0 sql sql-server sql-server-2012
我想从日期列等于特定日期的表中选择,我以格式'yyyy-mm-dd'的形式发送字符串.我需要转换该字符串,而不是比较我在表中是否有该日期.
现在我这样做:
select *
FROM table
where CONVERT(char(10), date_column,126) = convert(char(10), '2016-10-28', 126)
Run Code Online (Sandbox Code Playgroud)
date_column是表中的日期类型,我需要以这种格式'yyyy-mm-dd'从表中获取它,因为我使用126格式.我只是不确定其他部分我在哪里转换已经采用该格式的字符串并且我需要转换它因为我不知道使用它是否合适:
CONVERT(varchar(10), date_column,126) = '2016-10-28'
Run Code Online (Sandbox Code Playgroud)
您也不需要转换列.实际上,最好不要转换列,因为在列上使用函数可以防止sql server使用任何可能有助于该列上的查询计划的索引.此外,您正在将字符串转换为char(10) - 更好的方法是将其转换为日期:
where date_column = convert(date, '2016-10-28', 126)
Run Code Online (Sandbox Code Playgroud)
此外,如果您使用的是日期时间数据类型而不是日期,则需要检查日期时间值是否在您传递到下一个日期的日期之间.
您可以使用 CONVERT() 函数通过给出输入参数的特定格式将字符串转换为日期,如下所示
declare @date date
set @date = CONVERT(date, '2016-10-28', 126)
select @date
Run Code Online (Sandbox Code Playgroud)
您可以在此处找到SQL 转换日期函数可能的格式参数值
| 归档时间: |
|
| 查看次数: |
16615 次 |
| 最近记录: |