mysql - 如何从工作日名称中获取日期格式?
问题描述
在工作日
Sunday=1
Monday=2
Tuesday=3
Wednesday=4
Thursday=5
Friday=6
Saturday=7
我有当前字符串
Saturdays at 13:35 PDT
我想把INSERT
它放到一个DATETIME
列中,让它的日期和时间只有这样:
DATETIME
0000-01-01 13:35:00 //Sundays at 13:35 PDT
0000-01-02 13:35:00 //Mondays at 13:35 PDT
0000-01-03 13:35:00 //Tuesdays at 13:35 PDT
0000-01-04 13:35:00 //Wednesdays at 13:35 PDT
0000-01-05 13:35:00 //Thursdays at 13:35 PDT
0000-01-06 13:35:00 //Fridays at 13:35 PDT
0000-01-07 13:35:00 //Saturdays at 13:35 PDT
我考虑过使用以下
INSERT into TABLE(column) VALUES (STR_TO_DATE('Saturdays at 13:35', '%Ws at %H:%i'))
但它总是给我NULL
价值,我也想将时区从PDT更改为UTC,但我不知道如何使用 STR_TO_DATE()
函数
解决方案
在工作日使用 aCASE
可能会对此有所帮助。
然后CONCAT
是时候了。
例子 :
SELECT
CONCAT(
case SUBSTRING(weekday_at_time, 1, LOCATE(' ',weekday_at_time)-1)
when 'Sundays' then '0000-01-01 '
when 'Mondays' then '0000-01-02 '
when 'Tuesdays' then '0000-01-03 '
when 'Wednesdays' then '0000-01-04 '
when 'Thursdays' then '0000-01-05 '
when 'Fridays' then '0000-01-06 '
when 'Saturdays' then '0000-01-07 '
end,
STR_TO_DATE(SUBSTRING(weekday_at_time,length(weekday_at_time)-4,5),'%H:%i')
) AS "DATETIME"
FROM (
-- Sample data
select 'Sundays at 14:45' as weekday_at_time
union all select 'Saturdays at 13:35'
) AS Samples
在此处测试 SQL Fiddle
但这是假设您将其更新为 VARCHAR 列。
因为将“0000”年的日期时间戳转换为日期时间会产生不同的结果。
例如:
select cast('0000-01-01 13:35:00' as datetime) as dt
回报:
-0001-12-30T13:35:00Z
如果您要更新到 DATETIME,将年份更改为“1900”可能会更安全。在此处
测试 SQL Fiddle
推荐阅读
- android - Android 9 RTT 范围请求状态 1
- reactjs - 如何从日期选择器中保存日期值?
- arangodb - ArangoDB 图遍历不使用组合索引
- javascript - 尝试运行我的机器人命令时出现此错误
- android - 如何在 NativeScript 项目中从 JS 访问 Android 颜色资源?
- flutter - 颤动 - 画布drawImage返回空白
- django - 如何在 Django 数据迁移上下文中访问模型的自定义管理器?
- ios - 使用 Telr 进行支付集成
- google-cloud-storage - GCS 问题的数据流模板作业失败原因
- elixir - 将列表解析为地图