Php 是否将varchar转换为datetime以排序日期?
我想尝试对日期进行排序,但有一些限制,因为这些列是varchar 这是现有的数据 这是我测试的查询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
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,感谢这对类似情况非常有用。:)感谢您在类似情况下提供的帮助。:)