sql - 选择字符串值并转换/转换为日期
问题描述
我正在尝试从 MariaDB 连接两个表并将长文本(我假设它与字符串相同?)转换为日期。
我搜索了几个论坛并阅读了一些 MariaDB 文档,但我不是一个精通 SQL 编码器,所以我可能在某个地方的语法有误,如果你能提供任何帮助,我将不胜感激。
'membership_expiry_date' 中的数据不是强制性的 - 一些条目为 NULL,但如果有日期,则它是以下格式的长文本:2019/12/31 (YYYY/mm/dd)
SELECT u1.`ID` AS 'User ID',
u1.`user_login` AS 'Website ID',
m1.meta_value AS 'Last Name',
m2.meta_value AS 'First Name',
m3.meta_value AS 'Subs Expire',
FROM dbName_users u1
LEFT JOIN dbName_usermeta m1 ON (m1.`user_id` = u1.`ID` AND m1.`meta_key` = 'last_name')
LEFT JOIN dbName_usermeta m2 ON (m2.`user_id` = u1.`ID` AND m2.`meta_key` = 'first_name')
LEFT JOIN dbName_usermeta m3 ON (m3.`user_id` = u1.`ID` AND m3.`meta_key` = STR_TO_DATE('membership_expiry_date', '%Y/%m/%d'))
基本上我需要将日期作为日期拉出来,以便以后可以对其进行操作,如果它是字符串,我将无法做到这一点。
如果我设法让这个(或其他一些变体)代码运行,那么到目前为止的结果都是 NULL。
更新 所以我在 wpDataTable WordPress 插件中使用下面的代码,虽然我认为它正在使用“membership_expiry_date”并产生一个 DATE 列(“Subs_Expire”),但我无法像 DATE 列一样操作 wpDataTables 插件中的列. 我知道这一点是因为我添加了包含 DATETIME 数据的“User_Registered”列,并且在条件格式选项中确实具有大于和小于运算符,但“Subs_Expire”列没有。
我尝试使用具有各种 DATE/TIME 选项的 CAST() 和 CONVERT() 而不是 STR_TO_DATE(),但没有运气。
我在 TMS 网站上发布了一个查询,wpDataTables 的编码人员,看看他们是否可以提供帮助:https ://tmsplugins.ticksy.com/ticket/1989889/
SELECT u1.`ID` AS `User ID`,
u1.`user_login` AS `Website_ID`,
u1.`user_registered` AS `User_Registered`,
m1.meta_value AS `Last_Name`,
m2.meta_value AS `First_Name`,
STR_TO_DATE(m3.meta_value, '%Y/%m/%d') as `Subs_Expire`,
FROM dbName_users u1 LEFT JOIN
dbName_usermeta m1
ON m1.`user_id` = u1.`ID` AND
m1.`meta_key` = 'last_name' LEFT JOIN
dbName_usermeta m2
ON m2.`user_id` = u1.`ID` AND
m2.`meta_key` = 'first_name' LEFT JOIN
dbName_usermeta m3
ON m3.`user_id` = u1.`ID` AND
m3.`meta_key` = 'membership_expiry_date';
解决方案
你的最后一句话可能是这样的。
LEFT JOIN icxdx_usermeta m3 ON (m3.
user_id
= u1.ID
AND m3.meta_key
= (SELECT CAST(membership_expiry_date AS DATE))
我想这个声明必须有效。但它可能会为 null 创建错误。试试看。
推荐阅读
- html - 如何使用动态图片基础 URL insize HTML 图片模板?
- apache - apache web 服务器内容安全策略阻止脚本 src
- email - 如何使用 Spring Integration Mail 从“text/html; charset=us-ascii”检索电子邮件内容正文
- git - Git- Single Branch:如何从单个分支签出新的远程分支?
- c++ - ERROR_INVALID_PARAMETER 发生在 Win10 上的 ReadFile() 而不是 Win7
- r - 设定条件
- java - Jenkins artifactoryPublish 失败,HTTP 响应代码:405。HTTP 响应消息:不允许方法
- load-balancing - 对于本地集群,推荐的负载均衡解决方案是什么?
- dpdk - 运行 DPDK 示例程序时出现 EAL 初始化错误
- reactjs - 如何解决我的反应项目中的 npmstart 命令错误?