存储为文本的日期之间的查询

时间:2017-10-16 11:27:00

标签: sql-server datetime

我有一个表(不是由我构建),其中包含日期列(regDate - 例如2016年10月18日)作为文本和列,仅包含年份和mumeric月份。 我的问题是在2016年第8个月和2017年第10个月之间运行查询查看数据。 如何转换此日期格式以查看结果?

2 个答案:

答案 0 :(得分:0)

在SQL Server中将您转换为Datetime。假设您的日期格式为18/10/2016

select CONVERT(date, '18/10/2016', 103)

您可以在where子句中转换日期,然后使用between查询。

答案 1 :(得分:0)

我会使用datefromparts()

where convert(date, regdate, 103) >= datefromparts(2016, 8, 1) and
      convert(date, regdate, 103) < dateadd(month, 1, datefromparts(2017, 10, 1))

作为澄清的一句话:您有一个恰好代表日期的 text 列。您没有日期列。

我强烈建议您修复表格中的列类型:

update t
    set regdate = convert(date, regdate, 103) ;  -- this will format using the default date format

alter t alter column regdate date;