繁体   English   中英

如何从工作日名称获取DATE格式?

[英]How to get the DATE format from Weekday name?

工作日

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()函数

在工作日使用CASE可能对此有所帮助。
然后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小提琴

但这是假设您将其更新为VARCHAR列。

因为将“ 0000”年的datetimestamp强制转换为datetime可以得出不同的结果。

例如:

select cast('0000-01-01 13:35:00' as datetime) as dt

返回:

-0001-12-30T13:35:00Z

如果要更新为DATETIME,则将年份更改为“ 1900”可能更安全。
这里测试SQL小提琴

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM