我正在尝试从 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';