在MySQL中,我们使用"%w"格式参数来获取一周中的哪一天。SQL Server等效于什么?我用了"ddd",但它给我的是日期名称(例如:Saturday
(,而不是数字。有什么建议吗?
这就是我尝试过的:
select FORMAT( SYSDATETIME(), 'ddd', 'fa-IR' )
我知道DATEPART(weekday , GETDATE())
,但缺少culture
参数。
MySQL的%w没有精确的副本,它总是(0=周日..6=周六(
在任何SQL Server实例中,每次周日获取0的最简单方法是:
datediff(day,-1,[yourdate_value]) % 7
这样做的目的是计算自1899-12-31年(星期日(以来的天数,然后提供除以7的余数。0的结果总是周日,6的结果总是周六。
NBT-SQL使用1900-01-01(星期一(的基准日期,该基准日期可以在T-SQL日期函数(如datediff(中用0表示。所以-1比基准日期少了一天。您可以使用任何可靠的周日日期,例如,而不是-1
select datediff(day,'20181104',getdate()) % 7, datediff(day,-1,getdate()) % 7
并且两列总是(0=周日..6=周六(
如果您不使用上面的设置,请注意,在MS SQL Server中,可以更改表示零的星期几,此设置称为datefirst
,您可以使用访问此设置的当前值
select @@datefirst
SQL Server中的日期第一个值7=MySQL%w,共0个(星期日(。datefirst的初始设置通常是通过选择语言来建立的,您可以使用以下查询找到依赖于语言的datefirst值:
select alias, name, dateformat, datefirst
from sys.syslanguages
alias name dateformat datefirst
---- --------------------- -------------------- ------------ -----------
1 English us_english mdy 7
2 German Deutsch dmy 1
3 French Français dmy 1
4 Japanese 日本語 ymd 7
5 Danish Dansk dmy 1
6 Spanish Español dmy 1
7 Italian Italiano dmy 1
8 Dutch Nederlands dmy 1
9 Norwegian Norsk dmy 1
10 Portuguese Português dmy 7
11 Finnish Suomi dmy 1
12 Swedish Svenska ymd 1
13 Czech čeština dmy 1
14 Hungarian magyar ymd 1
15 Polish polski dmy 1
16 Romanian română dmy 1
17 Croatian hrvatski ymd 1
18 Slovak slovenčina dmy 1
19 Slovenian slovenski dmy 1
20 Greek ελληνικά dmy 1
21 Bulgarian български dmy 1
22 Russian русский dmy 1
23 Turkish Türkçe dmy 1
24 British English British dmy 1
25 Estonian eesti dmy 1
26 Latvian latviešu ymd 1
27 Lithuanian lietuvių ymd 1
28 Brazilian Português (Brasil) dmy 7
29 Traditional Chinese 繁體中文 ymd 7
30 Korean 한국어 ymd 7
31 Simplified Chinese 简体中文 ymd 7
32 Arabic Arabic dmy 1
33 Thai ไทย dmy 7
34 Bokmål norsk (bokmål) dmy 1
函数DATEPART(WEEKDAY, YourDateColumn)
响应日期优先设置,因此如果日期优先设置为7,并且日期部分值为0,则为星期日。如果datefirst设置为1,那么datepart值0表示星期一。以下是对这种(经常令人困惑的(关系的讨论。
您可以使用以下选项覆盖这些默认设置:
SET DATEFIRST 7 ;
SELECT DATEPART(WEEKDAY, [yourdate_value])
现在(0=周日..6=周六(
您想要DATEPART
:
DATEPART(WEEKDAY, YourDateColumn)
请注意,返回值因语言而异,因为不同的语言将不同的日子视为一周中的第一天。