Php odbc_exec日期时间错误
运行包含日期作为输入的存储过程时出错 我的问题是:Php odbc_exec日期时间错误,php,sql,sql-server-2008,odbc,Php,Sql,Sql Server 2008,Odbc,运行包含日期作为输入的存储过程时出错 我的问题是: $query = "asistencia_virtual '2012-01-01', '2012-12-31'"; 在管理工作室,它工作完美 我只对过时的查询有问题,其他的都很好 警告:odbc_exec():SQL错误:[Microsoft][SQL Server本机客户端10.0][SQL Server]在SQLExecDirect中执行sintaxis al convertir una cadena de caracteres a da
$query = "asistencia_virtual '2012-01-01', '2012-12-31'";
在管理工作室,它工作完美
我只对过时的查询有问题,其他的都很好
警告:odbc_exec():SQL错误:[Microsoft][SQL Server本机客户端10.0][SQL Server]在SQLExecDirect中执行sintaxis al convertir una cadena de caracteres a datetime.,SQL状态22008时出错
当谈到日期时,最好的做法是用书面形式代替月份,这样就不可能把日期和月份混在一起。尝试按以下格式将日期作为字符串输入: “dd-MMM-yyyy”
$query = "asistencia_virtual '01 Jan 2012', '31 Dec 2012'";
试试这个:
您已经发现,
yyyy-mm-dd
不是一种安全的日期格式。原因如下:
SET LANGUAGE FRENCH;
SELECT MONTH(CONVERT(DATETIME, '2012-01-12')); -- yields 12, not 1
GO
SELECT CONVERT(DATETIME, '2012-12-31');
第一个查询产生12
而不是1
,因为它将其解释为yyyy-dd-mm
。第二个查询生成:
Msg 242,第16级,第3号州,第1行将日期时间转换为日期时间限制 仅限日期的日期时间字符串文本的唯一安全格式是
yyyymmdd
。下面是代码的外观(添加必需的EXEC
和dbo.
前缀):
有关常见日期/时间查询问题的更多信息:
yyyy-dd-mm
。我也不会试图将ISO标准拉得太远,因为大多数客户不知道或不关心-99%的客户使用mm/dd/yyyy
或dd/mm/yyyy
…谢谢{d'2012-12-31'}修复它!
SET LANGUAGE FRENCH;
SELECT MONTH(CONVERT(DATETIME, '2012-01-12')); -- yields 12, not 1
GO
SELECT CONVERT(DATETIME, '2012-12-31');
$query = "EXEC dbo.asistencia_virtual '20120101', '20121231';";