Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.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 是否将varchar转换为datetime以排序日期?_Php_Sql_Sql Server - Fatal编程技术网

Php 是否将varchar转换为datetime以排序日期?

Php 是否将varchar转换为datetime以排序日期?,php,sql,sql-server,Php,Sql,Sql Server,我想尝试对日期进行排序,但有一些限制,因为这些列是varchar 这是现有的数据 这是我测试的查询 SELECT PERIODE, RF, APPROVE_DATE FROM DLY_UPGRADE WHERE (SLP = '368') AND (CONVERT(datetime, APPROVE_DATE, 101) > '01/01/2017') 错误消息: 使用 从字符串更改日期,然后与Y-m-d格式进行比较 SELECT

我想尝试对日期进行排序,但有一些限制,因为这些列是varchar

这是现有的数据

这是我测试的查询

SELECT        PERIODE, RF, APPROVE_DATE
FROM            DLY_UPGRADE
WHERE        (SLP = '368') AND (CONVERT(datetime, APPROVE_DATE, 101) > '01/01/2017')
错误消息:

使用

从字符串更改日期,然后与
Y-m-d
格式进行比较

 SELECT        PERIODE, RF, APPROVE_DATE
 FROM            DLY_UPGRADE
 WHERE        (SLP = '368') AND (DATE_FORMAT(STR_TO_DATE(`APPROVE_DATE`, '%d/%m/%Y'), '%Y-%m-%d')) > '2017-01-01')
使用

从字符串更改日期,然后与
Y-m-d
格式进行比较

 SELECT        PERIODE, RF, APPROVE_DATE
 FROM            DLY_UPGRADE
 WHERE        (SLP = '368') AND (DATE_FORMAT(STR_TO_DATE(`APPROVE_DATE`, '%d/%m/%Y'), '%Y-%m-%d')) > '2017-01-01')

如果您使用的是SQL Server,请尝试以下操作:

SELECT        PERIODE, RF, APPROVE_DATE
FROM            DLY_UPGRADE
WHERE        (SLP = '368') AND (CONVERT(date, APPROVE_DATE, 103) > '2017-01-01')

如果您使用的是SQL Server,请尝试以下操作:

SELECT        PERIODE, RF, APPROVE_DATE
FROM            DLY_UPGRADE
WHERE        (SLP = '368') AND (CONVERT(date, APPROVE_DATE, 103) > '2017-01-01')
在这里,您可以将您的
varchar
转换为
datetime
,并使用它在asc/desc中进行订购。 批准日期也是一样的

在这里,您可以将您的
varchar
转换为
datetime
,并使用它在asc/desc中进行订购。
批准日期也是一样。

您的转换问题可能出现在
WHERE
子句中。但是,在继续查询之前,我将使用
TRY\u CONVERT()
进行测试:

样式
101
为MM/DD/YYYY,因此
'15/11/2016'
将失败,因为
15
不是有效月份
103
是DD/MM/YYYY,这似乎是您想要的

假设这不会在列中返回意外值,我建议:

SELECT PERIODE, RF, APPROVE_DATE
FROM  DLY_UPGRADE
WHERE SLP = '368' AND
      TRY_CONVERT(datetime, APPROVE_DATE, 103) > '2017-01-01'
ORDER BY ?  -- not sure if you want PERIOD or TRY_CONVERT(datetime, APPROVE_DATE, 103)

您的转换问题可能出现在
WHERE
子句中。但是,在继续查询之前,我将使用
TRY\u CONVERT()
进行测试:

样式
101
为MM/DD/YYYY,因此
'15/11/2016'
将失败,因为
15
不是有效月份
103
是DD/MM/YYYY,这似乎是您想要的

假设这不会在列中返回意外值,我建议:

SELECT PERIODE, RF, APPROVE_DATE
FROM  DLY_UPGRADE
WHERE SLP = '368' AND
      TRY_CONVERT(datetime, APPROVE_DATE, 103) > '2017-01-01'
ORDER BY ?  -- not sure if you want PERIOD or TRY_CONVERT(datetime, APPROVE_DATE, 103)

为什么要用varchar来存储日期?为什么要用varchar来存储日期?谢谢,我的问题解决了。我只需要用01-01-2017调整日期格式101代码,谢谢我的问题解决了。我只需要将日期格式101代码调整为01-01-2017,感谢这对类似情况非常有用。:)感谢您在类似情况下提供的帮助。:)