Comment convertir une année-semaine (p. Ex. 0852 ou 200852) en une date (p. Ex. 2008-12-31 ou plus précisément un jour de fin de semaine, p. Ex. Samedi 2008-12-27 ou un jour de début de semaine c.-à-d. -21)? N'importe quel jour du week-end fera, vendredi, samedi, dimanche ou lundi.Comment convertir une semaine (200851) en une date (2008-12-27)?
Répondre
MS SQL Server a DATEADD functionallity qui devrait aider ...
DECLARE @date_string NCHAR(6)
SELECT @date_string = N'200852'
SELECT DATEADD(
WEEK,
CAST(RIGHT(@date_string, 2) AS INT),
DATEADD(
YEAR,
CAST(LEFT(@date_string, 4) AS INT) - 1900,
0
)
)
EDIT:
Désolé, manqué le peu de faire un samedi, etc ...
Une fois que vous avez la valeur, utilisez DATEPART pour obtenir ce jour de la semaine, il est, et soustrayez de votre réponse ...
DECLARE @new_date DATETIME
SELECT @new_date = '2008 Dec 30'
SELECT DATEADD(DAY, 1-DATEPART(dw, @new_date), @new_date)
Ceci amènera la valeur au début de la semaine, en fonction de ce que vous avez défini DATEFIRST.
Dans Oracle:
SELECT TO_DATE('04.01.' || SUBSTR(iso, 1, 4)) + (TO_NUMBER(SUBSTR(iso, 5, 2))) * 7 - TO_CHAR(TO_DATE('04.01.' || SUBSTR(iso, 1, 4)), 'D')
FROM (
SELECT '200101' AS iso
FROM dual
)
Si cela est dans Oracle, consultez la fonction TO_DATE avec différentes options, YYYYWW. sélectionnez TO_Date ('2008Y' YYYYWW) à partir du double; Une fois que vous obtenez le début de la semaine, vous pouvez toujours ajouter le nombre de jours pour obtenir la date du week-end.
Les fonctions de date sont assez spécifiques à la base de données. Dans MySQL par exemple, vous pouvez faire ce qui suit pour obtenir le lundi de la semaine au format 'YYYYWW':
select date_sub(makedate(left('YYYYWW', 4), 1 + (right('YYYYWW', 2) - 1) * 7),
interval weekday(makedate(left('YYYYWW', 4), 1 + (right('YYYYWW', 2) - 1) * 7)) DAY);
Avec MAKEDATE (à gauche ('YYYYWW', 4), 1 + (à droite ('YYYYWW' , 2) - 1) * 7) vous obtiendrez une date qui est définitivement dans la semaine et l'année données, et avec la fonction date_sub nous revenons au lundi de cette semaine.
Exemples:
- pour '200906' ce retournerait « 2009-02-02
- pour '200901' il retournerait '2008-12-29' (ce qui est en fait le lundi semaine 1 de 2009)
Voici une solution presque indépendante de la base de données, si c'est important.
Créez une table appelée ALMANAC, clé primaire DATE, qui répertorie tous les attributs d'une date que vous prévoyez d'utiliser. L'un d'eux pourrait être ANNÉE, un autre pourrait être une SEMAINE. Vous pouvez inclure toutes les fonctions informatiques DATE que vous voulez utiliser. Vous pouvez également inclure des attributs DATE spécifiques à l'entreprise, comme si la date est un jour férié pour l'entreprise.
Ecrivez un programme pour remplir le DATE par exemple pendant 10 ans (environ 3650 lignes plus quelques années bissextiles). Ce programme utilisera les fonctions de date spécifiques à l'environnement disponibles dans le SGBD de dans un langage de programmation. Une fois que vous avez rempli la table ALMANAC, utilisez-la comme des données ordinaires. Rejoignez la clé primaire avec tous les champs Date de votre base de données.
Cela s'avère extrêmement utile pour préparer un rapport par semaine, par mois, par trimestre et par année, presque automatiquement.
Si DATE n'est pas suffisamment granulaire, vous pouvez même diviser l'Almanach en unités de temps plus petites, comme les décalages où 3 décalages sont d'un jour.
- 1. Comment convertir une chaîne en une date dans sybase
- 2. Convertir une chaîne avec date et heure à une date
- 3. Comment convertir DateTime en Date
- 4. Sélecteur de date Javascript pour afficher une semaine seulement?
- 5. Comment trouver quel jour de la semaine pour une date donnée en utilisant Cocoa
- 6. comment obtenir la date de la semaine prochaine en javascript
- 7. Comment convertir une chaîne en TimeSeriesDataItem
- 8. Comment convertir une datetime .Net en une date-heure T-SQL
- 9. Comment convertir une chaîne "aaaa-MM-ddZ" en une date avec .net?
- 10. Convertir un nombre entier en une liste de jours de la semaine
- 11. Est-ce que quelqu'un sait comment convertir un champ date en une chaîne en java j2me?
- 12. comment convertir une table mysql en fichier texte en php?
- 13. convertir une chaîne à un format de date
- 14. Comment puis-je convertir une valeur de date au format ISO 8601 en objet de date en JavaScript?
- 15. Comment convertir une chaîne JSON en objet JavaScript dans jQuery?
- 16. sas date - convertir aujourd'hui() en format yyyymmdd
- 17. Le numéro de la semaine date d'impression
- 18. Comment convertir une chaîne en CharSequence?
- 19. Comment convertir une axd en ashx?
- 20. Comment convertir une variable en chaîne?
- 21. Comment convertir une chaîne en OctetString (C#)?
- 22. Comment convertir une wav stéréo en mono
- 23. Comment convertir une adresse IPv4 en IPv6
- 24. Comment obtenez-vous les "date de début de semaine" et "date de fin de semaine" du numéro de semaine dans SQL Server?
- 25. Comment analyser une chaîne de date HTTP en Python?
- 26. Comment puis-je convertir une chaîne en date-heure dans .NET?
- 27. Comment convertir une date en yyww et vice versa dans VB.NET?
- 28. Convertir une sous-requête en une jointure
- 29. Python, Sqlite3 - Comment convertir une liste en une cellule BLOB
- 30. Comment convertir une sous-requête SQL en une jointure
Dans quelle base de données êtes-vous? –
Plus d'informations nécessaires - dépend de l'endroit où se termine la semaine 1, et si cela doit être une semaine complète ou non. –
La semaine ISO se termine le dimanche et la première semaine contient toujours le 4 janvier. – Quassnoi