Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在SQLServer2005中将日期列转换为ODBC规范格式_Php_Sql_Sql Server_Sql Server 2008_Date - Fatal编程技术网

Php 在SQLServer2005中将日期列转换为ODBC规范格式

Php 在SQLServer2005中将日期列转换为ODBC规范格式,php,sql,sql-server,sql-server-2008,date,Php,Sql,Sql Server,Sql Server 2008,Date,我正在处理在MicrosoftSQLServer2008中将日期列转换为ODBC规范格式的问题 我在php中有以下SQL查询: $sql_query = "UPDATE [$connectionInfo[Database]].[dbo].[log_record] SET [lock]='0' WHERE CONVERT [Date] = '".json_encode($value['Date']['date'])."' 基本上,部分”.json_encode($value['Date']['D

我正在处理在MicrosoftSQLServer2008中将日期列转换为ODBC规范格式的问题

我在php中有以下SQL查询:

$sql_query = "UPDATE [$connectionInfo[Database]].[dbo].[log_record] SET [lock]='0' WHERE CONVERT [Date] = '".json_encode($value['Date']['date'])."'
基本上,部分
”.json_encode($value['Date']['Date'])。“
工作并打印为
”“2017-06-01 00:00:00”
。但问题在于[日期]栏。我如何比较它们?它会生成以下错误:

错误:从转换日期和/或时间时转换失败 字符串。查询:更新[dba\U sql].[dbo].[log\U记录]集 [lock]=“0”,其中[Date]=“2017-06-01 00:00:00”

我尝试了以下几点,但没有成功:

$sql_query = "UPDATE [$connectionInfo[Database]].[dbo].[log_record] SET [lock]='0' WHERE CONVERT CONVERT(varchar, Date, 120) = '".json_encode($value['Date']['date'])."'

去掉双引号,删除代码中挂起的
convert
。无需将表中的日期转换为字符类型进行比较

以下内容有效:
选择转换(日期'2017-06-01 00:00:00')

这不是:
选择转换(日期“2017-06-01 00:00:00”)

rextester演示:


另请注意:SQL Server中唯一真正安全的日期/时间文本格式,至少对于
datetime
smalldatetime
,是:
YYYYMMDD
YYYY-MM-DDThh:MM:ss[.nnn]

参考:

例如,如果您的语言设置隐式地将
dateformat
设置为
dmy
,那么两个不同转换的相同输入可以产生不同的输出,如果不是错误:

set language 'british';
select toDatatype = 'datetime' ,val = convert(char(10),convert(datetime,'2017-06-01 00:00:00'),120)
union all
select toDatatype = 'date', val = convert(char(10),convert(date,'2017-06-01 00:00:00'),120)
返回:

+------------+------------+
| toDatatype |    val     |
+------------+------------+
| datetime   | 2017-01-06 |
| date       | 2017-06-01 |
+------------+------------+

selectconvert(datetime,'2017-06-13')
将返回一个错误,其中as
selectconvert(date,'2017-06-13')
将返回
2017-06-13

去掉双引号,并删除代码中挂起的
convert
。无需将表中的日期转换为字符类型进行比较

以下内容有效:
选择转换(日期'2017-06-01 00:00:00')

这不是:
选择转换(日期“2017-06-01 00:00:00”)

rextester演示:


另请注意:SQL Server中唯一真正安全的日期/时间文本格式,至少对于
datetime
smalldatetime
,是:
YYYYMMDD
YYYY-MM-DDThh:MM:ss[.nnn]

参考:

例如,如果您的语言设置隐式地将
dateformat
设置为
dmy
,那么两个不同转换的相同输入可以产生不同的输出,如果不是错误:

set language 'british';
select toDatatype = 'datetime' ,val = convert(char(10),convert(datetime,'2017-06-01 00:00:00'),120)
union all
select toDatatype = 'date', val = convert(char(10),convert(date,'2017-06-01 00:00:00'),120)
返回:

+------------+------------+
| toDatatype |    val     |
+------------+------------+
| datetime   | 2017-01-06 |
| date       | 2017-06-01 |
+------------+------------+

selectconvert(datetime,'2017-06-13')
将返回一个错误,其中as
selectconvert(date,'2017-06-13')
将返回
2017-06-13

我尝试了它,但它不起作用。下面是我的尝试:$sql_query=“UPDATE[$connectionInfo[Database]].[dbo].[form_record]SET[lock]='0',其中CONVERT(Date,'2017-06-01 00:00:00')='”。json_encode($value['Date']['Date'])。“'AND[form u name]='.$value['form name'.'和[I/O.][I/O]='value['I/O'.''.''.''.''''.'和[facility]='value['@安德鲁,这不是我的建议。您的错误显示为
其中[Date]='“2017-06-01 00:00:00”
。看到日期前后的双引号了吗?扔掉那些。我试过了,但没用。下面是我的尝试:$sql_query=“UPDATE[$connectionInfo[Database]].[dbo].[form_record]SET[lock]='0',其中CONVERT(Date,'2017-06-01 00:00:00')='”。json_encode($value['Date']['Date'])。“'AND[form u name]='.$value['form name'.'和[I/O.][I/O]='value['I/O'.''.''.''.''''.'和[facility]='value['@安德鲁,这不是我的建议。您的错误显示为
其中[Date]='“2017-06-01 00:00:00”
。看到日期前后的双引号了吗?扔掉那些。