将varchar MM/DD/YYYY数据转换或转换为日期时间MM/DD/YYYY

0 sql sql-server datetime varchar

我正在尝试将varchar mm/dd/yyyy数据转换/转换为datetime mm/dd/yyyy格式,以便我可以使用between子句查询范围.

我之前看过一个类似的问题,但没有大肆宣传,我不知道如何解决这个问题.

Aar*_*and 8

要进行适当的范围查询,您可以以可预测的方式从错误的区域格式转换,然后使用开放式范围.现在这并不能保护你免受06/08/20138月6日而不是6月8日进入的人的影响,但是如果你支持自由文本输入,那么你将不得不采取这种风险.

DECLARE @s DATETIME, @e DATETIME;

SELECT @s = CONVERT(DATETIME, '03/13/2013', 101),
       @e = CONVERT(DATETIME, '03/26/2013', 101);

SELECT <cols>
FROM dbo.table_name
  WHERE datetime_column >= @s
  AND datetime_column < DATEADD(DAY, 1, @e);
Run Code Online (Sandbox Code Playgroud)

理想情况下,您不允许用户输入区域废话m/d/y.如果您控制存储过程的输入格式,您可以发送明确的日期文字,如YYYYMMDD.或者更好的是,使用强类型参数.进入临时废话的用户越多,你就越不会头疼.请阅读这些文章:

  • @kevro不,我没有.`SET`只允许您一次分配一个变量.我指的不止一个. (6认同)