Php 基于文本字段将字段显示为yyyy/mm/dd
使用PHP和MySQL,我有一个事件表,它由一个名为:sort_date的字段排序,格式为yyyy/mm/dd 我需要在页面上显示开始日期:月日(例如11月7日) 因此,我将开始日期和结束日期字段最初设置为日期选择器。但一旦输入了一条记录,我就必须手动更改日期的格式:月日。但这并没有按升序对日期进行排序,所以我有一个排序日期字段…这是yyyy/mm/dd格式 我希望在我的页面上列出如下事件: 八月二十七日 时间 哪里 地址 描述 这是可行的,但现在我将开始和结束日期更改为文本,sort_date字段没有读取信息 所以我的问题是,如何让sort_date字段读取文本start_date字段中的内容并将其显示为yyyy/mm/dd 以下是我的sql语句:Php 基于文本字段将字段显示为yyyy/mm/dd,php,mysql,sorting,Php,Mysql,Sorting,使用PHP和MySQL,我有一个事件表,它由一个名为:sort_date的字段排序,格式为yyyy/mm/dd 我需要在页面上显示开始日期:月日(例如11月7日) 因此,我将开始日期和结束日期字段最初设置为日期选择器。但一旦输入了一条记录,我就必须手动更改日期的格式:月日。但这并没有按升序对日期进行排序,所以我有一个排序日期字段…这是yyyy/mm/dd格式 我希望在我的页面上列出如下事件: 八月二十七日 时间 哪里 地址 描述 这是可行的,但现在我将开始和结束日期更改为文本,sort_date
SELECT *
FROM events
WHERE DATE_FORMAT(sort_date, '%Y-%m-%d') >= Date_Format(Now(), '%Y-%m-%d')
AND authorize = 1
ORDER BY sort_date
如何修复此问题?这需要两个步骤
首先,需要将文本列日期转换为date
表达式
你可以这样做,例如
STR_TO_DATE('2014/11/18', '%Y/%m/%d')
然后,您可以操纵该DATE
表达式,对其进行排序或格式化,或者执行任何需要执行的操作。要从上述表达式中获取2014年11月的,您需要执行以下操作:
DATE_FORMAT(STR_TO_DATE('2014/11/18', '%Y/%m/%d'), '%M %Y')
要从该表达式中获取包含11月1日(当月第一天)的DATE
值,可以执行以下操作
DATE(DATE_FORMAT(STR_TO_DATE('2014/11/18', '%Y/%m/%d'), '%Y-%m-01'))
关键是,您应该将基于字符串的日期转换为DATE
表达式,因为这样可以使用各种有用的日期算术运算
要处理问题中的WHERE
子句,请执行以下操作:
WHERE STR_TO_DATE(sort_date, '%Y/%m/%d') >= NOW()
要处理
ORDER BY子句,可以执行以下操作:
ORDER BY STR_TO_DATE(sort_date, '%Y/%m/%d')
这里有危险。如果某些日期字符串格式错误,MySQL日期转换将自动返回NULL。因此,我将使用以下orderby
子句,然后仔细查看输出,至少一次
ORDER BY STR_TO_DATE(sort_date, '%Y/%m/%d') NULLS FIRST
你看过使用矩量.ms吗?我明白你的意思了,John关于STR_TO_DATE()…但是我如何让该字段从另一个字段读取文本条目呢?下面是我的sql语句:从事件中选择*,其中DATE_FORMAT(sort_DATE,'%Y-%m-%d')>=DATE_FORMAT(Now(),'%Y-%m-%d')和authorize=1 ORDER BY sort_DATE