Poo*_*onk 0 mysql date date-formatting
我正在为客户工作一个小项目,数据库中的数据让我有点麻烦.我正在从数据库中填写付费分期付款的搜索表单.我可以把数据弄好,它的日期字段让我很烦.
每个分期的日期,月份和年份都有单独的字段.有没有办法可以使用CONCAT或DATE甚CAST至可以在组合字段上使用来搜索数据.
我尝试了以下内容
SELECT DATE_FORMAT( CONCAT( received_date, received_month, received_year ) , '%d/%m/%Y' ) FROM policy_installments
Run Code Online (Sandbox Code Playgroud)
和
SELECT DATE_FORMAT(STR_TO_DATE(CONCAT('pit.received_date', '-', 'pit.received_month','-', 'pit.received_year'), '%d-%m-%Y') AS mydate, '%d-%m-%Y') AS modate FROM policy_installments pit ORDER BY mydate
Run Code Online (Sandbox Code Playgroud)
和
SELECT * FROM policy_installments WHERE CONCAT(CAST(received_date AS CHAR),"-",CAST(received_month AS CHAR),"-",CAST(received_year AS CHAR)) >= '1-1-2014' AND CONCAT(CAST(received_date AS CHAR),"-",CAST(received_month AS CHAR),"-",CAST(received_year AS CHAR)) <= '31-3-2014'
Run Code Online (Sandbox Code Playgroud)
当我使用以下内容时,我会收到一些意外数据:
SELECT CONCAT_WS( received_date, "-", received_month, "-", received_year ) FROM policy_installments
Run Code Online (Sandbox Code Playgroud)
结果
2d313130312d3132303039
2d3237313032372d323732303039 etc etc
Run Code Online (Sandbox Code Playgroud)
3个字段中的每一个都是类型INT(11).
但是,这些都没有给我正确的数据.有没有办法我可以转换所有3个字段并使用日期传递到查询,以使我能够正确地获取正确的数据?
任何帮助将非常感激!
要将连接的字符串转换为日期,字符串的格式应与您用于转换的格式相同.
对于dd/mm/yyyy格式化的日期字符串,应使用%d/%m%Y格式转换为sql日期.
示例:
SELECT STR_TO_DATE(
CONCAT( received_date, '/', received_month, '/', received_year ),
'%d/%m/%Y'
) as rcvd_date
FROM policy_installments
Run Code Online (Sandbox Code Playgroud)
要与其他日期进行比较,您可以使用BETWEEN子句.
示例:
SELECT * FROM policy_installments
WHERE
STR_TO_DATE(
CONCAT( received_date, '-', received_month, '-', received_year ),
'%d-%m-%Y'
) BETWEEN STR_TO_DATE( '1-1-2014', '%d-%m-%Y' )
AND STR_TO_DATE( '31-3-2014', '%d-%m-%Y' )
Run Code Online (Sandbox Code Playgroud)
请参阅:
MySQL:STR_TO_DATE(str,format):将字符串转换为日期
| 归档时间: |
|
| 查看次数: |
5393 次 |
| 最近记录: |